# 실시간 웹 기반 RAG: 검색으로 검색하고 출처 인용과 함께 답하기

> 실시간 웹에서의 검색 증강 생성: 검색하고, 상위 페이지를 Markdown으로 읽고, 청크로 나눠 출처 인용과 함께 답합니다. Python 코드. KYC 없이, 암호화폐 결제.

- URL: https://llmwebsearch.com/ko/use-cases/rag/
- 마지막 업데이트: 2026-10-22
- 발행자: LLMWebSearch (https://llmwebsearch.com)

벡터 인덱스에는 지난달에 로드한 내용이 들어 있습니다. 어떤 질문은 오늘 웹이 말하는 내용이 필요합니다. 실시간 웹 RAG는 질문 시점에 검색합니다. 검색 한 번, 상위 페이지를 Markdown으로, 몇 개의 청크를 프롬프트에 넣고, 각 페이지로 이어지는 인용을 붙입니다.

**빠른 답변 — 실시간 웹 검색 결과로 RAG를 하려면 어떻게 하나요?**

질문 시점에 웹 검색을 실행하고, 상위 페이지를 읽고, 청크로 나누고, 가장 관련성 높은 청크를 남긴 뒤 모델에 번호가 매겨진 인용과 함께 답하도록 요청하세요. **LLMWebSearch**가 처음 두 단계를 한 번의 호출로 처리합니다. 순위가 매겨진 결과와 처음 3개 페이지를 Markdown으로, 크레딧 1개로, US$1.20/1K 검색부터. KYC 없이, 암호화폐로 결제.

## 실시간 웹 RAG란 무엇인가요?

검색(Retrieval) 단계가 자체 인덱스 조회 대신 웹 검색인 검색 증강 생성입니다. 질문이 검색 API로 가고, API가 페이지를 반환하면, 모델이 그 페이지들로부터 답합니다.

이 패턴은 가격, 릴리스, 규정, 일정, 뉴스처럼 변하는 것에 관한 질문에 적합합니다. 자체 문서가 다루지 못한 롱테일 질문에도 적합합니다. 비용은 질문당 검색 한 번이며, 첫 검색이 빗나가면 두 번입니다.

## 언제 새로 가져오고 언제 저장해야 하나요?

안정적이고 내 것인 것은 저장하고, 변하는 것은 가져오세요. 제품 매뉴얼, 내부 정책, 자체 문서는 벡터 인덱스에 두고 일정에 따라 갱신합니다. 경쟁사 가격, 규정, 뉴스는 실시간 검색에 속합니다.

많은 팀이 둘을 결합합니다. 먼저 자체 인덱스를 검색하고, 인덱스에 좋은 일치 항목이 없거나 질문이 최근 날짜를 언급할 때만 웹을 호출합니다.

가져온 페이지를 보관하기로 결정했다면 저희 입장을 참고하세요: 저희는 귀하의 검색 쿼리나 API가 반환하는 내용으로 어떤 모델도 학습시키지 않으며, 결과 저장을 금지하는 자체 규칙도 두지 않습니다. 다만 귀하가 읽는 페이지의 사이트 권리는 여전히 적용됩니다. 사이트 콘텐츠의 영구 사본을 만들기 전에 각 사이트의 약관을 확인하세요.

## 검색 결과를 청크로 나누려면 어떻게 하나요?

각 페이지를 제목 기준으로 나눈 뒤 긴 섹션을 고정 길이로 자르세요. Markdown에서는 제목이 `#`로 시작하는 줄이므로 이 작업이 쉽습니다. 인용이 분할 후에도 유지되도록 모든 청크에 출처 URL과 제목을 남기세요.

아래 예시는 검색하고, 세 페이지를 읽고, 청크로 나눈 뒤 질문과 단어가 가장 많이 겹치는 여섯 개의 청크를 고릅니다. 프로덕션에서는 단어 수 계산을 임베딩 모델로 바꾸세요. 구조는 그대로입니다.

*Python: 청크와 번호가 매겨진 출처를 이용한 실시간 웹 검색*

```python
import os
import re

import requests

API = "https://llmwebsearch.com/api/v1/search"
HEADERS = {"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]}


def live_chunks(query, read=3, chunk_len=1200):
    """Search, then cut each page that was read into heading-based chunks tagged with its source."""
    body = {"q": query, "max_results": 5, "read": read, "max_chars": 12000}
    results = requests.post(API, headers=HEADERS, json=body, timeout=60).json()["results"]
    chunks = []
    for r in results:
        if r.get("content_status") != "ok":
            continue
        for section in re.split(r"\n(?=#{1,3} )", r["content"]):
            section = section.strip()
            for start in range(0, len(section), chunk_len):
                chunks.append({"url": r["url"], "title": r["title"], "text": section[start:start + chunk_len]})
    return chunks


def top_chunks(chunks, question, k=6):
    """A plain keyword score; swap in your embedding model for better ranking."""
    words = set(re.findall(r"\w{4,}", question.lower()))

    def score(chunk):
        return sum(1 for w in re.findall(r"\w{4,}", chunk["text"].lower()) if w in words)

    return sorted(chunks, key=score, reverse=True)[:k]


def build_prompt(question):
    picked = top_chunks(live_chunks(question), question)
    urls = list(dict.fromkeys(c["url"] for c in picked))
    blocks = [f"[{urls.index(c['url']) + 1}] {c['title']}\n{c['text']}" for c in picked]
    sources = "\n".join(f"[{i}] {u}" for i, u in enumerate(urls, 1))
    return (
        "Use only the context to answer and cite sources as [n].\n\n"
        + "\n\n".join(blocks)
        + f"\n\nSources:\n{sources}\n\nQuestion: {question}"
    )
```

## 각 질문은 몇 개의 페이지를 읽어야 하나요?

셋이 좋은 출발점이며 검색을 크레딧 1개로 유지합니다. 대부분의 사실 질문은 좋은 검색 쿼리의 처음 두세 페이지 안에서 답이 나옵니다.

채팅 에이전트에서보다 더 긴 페이지를 요청하세요. 어차피 청커가 대부분의 텍스트를 버리기 때문입니다. 페이지당 `max_chars`를 10,000~15,000으로 두면 순위 선별기가 고를 것이 충분히 생깁니다. 답이 특정 사이트 하나에 달려 있다면 더 많은 페이지를 읽는 대신 `include_domains`로 그 사이트를 추가하세요.

## 모델이 출처를 인용하게 하려면 어떻게 하나요?

프롬프트에서 출처에 번호를 매기고 답변에 그 번호를 쓰도록 요청하세요. 짧은 지시가 잘 동작합니다. 오직 컨텍스트만 사용하고, 각 주장을 [n]으로 인용하고, 컨텍스트가 질문을 다루지 못할 때는 그렇다고 말하도록 하세요.

출처 목록은 프롬프트 끝에 두고, 번호마다 URL 하나를 붙이세요. 그런 다음 인터페이스에서 [n]을 링크로 렌더링하세요. 사용자는 확인할 수 있는 답변을 신뢰하며, 잘못된 인용은 검토에서 쉽게 발견됩니다.

## 페이지가 차단되었거나 비어 있으면 어떻게 하나요?

그 페이지는 건너뛰고 다른 페이지를 사용하세요. 모든 결과에는 `content_status`가 붙으며, `ok`인 결과에만 텍스트가 있습니다. 페이지가 빠진 이유는 저희 리더는 robots.txt를 준수합니다. 자신을 LLMWebSearch로 소개하고, 사이트가 리더를 위해 또는 모든 로봇을 위해 작성한 규칙을 따르며, 읽기가 허용되지 않은 페이지의 콘텐츠는 제외합니다 때문일 수 있습니다.

검색의 모든 페이지가 비어 있는 상태로 돌아오면 다른 검색 쿼리로 한 번 재시도하거나, 열려 있다고 아는 사이트에 대해 `include_domains`를 추가하세요. 사이트가 저희 리더를 거부하면, 결과는 콘텐츠 없이 해당 사이트의 상태와 함께 반환됩니다. 저희는 CAPTCHA를 풀거나 계정에 로그인하거나 차단 또는 페이월을 우회하지 않습니다.

## 실시간 웹 RAG의 비용은 얼마인가요?

대부분의 경우 질문당 검색 한 번입니다. 한 달에 5,000개의 질문에 답하는 지원 어시스턴트가 다섯 번 중 한 번은 두 번째 검색을 한다면 약 6,000번의 검색을 사용합니다. US$41.25 기준 검색 25,000회라면 그런 달을 네 번 커버합니다.

모델은 또한 보내는 청크도 읽습니다. 1,200자짜리 청크 여섯 개는 질문당 대략 2,000 토큰을 더하며, 이는 청크 크기와 개수로 조절할 수 있습니다.

## RAG 워크로드에는 어떤 팩이 적합한가요?

대부분의 파이프라인에서 질문 하나당 1크레딧입니다. 검색 크레딧에는 만료일이 없습니다. 이번 달에 사용하지 않은 크레딧은 내년에도 그대로 남아 있습니다.

| 요금제 | 수량 | 가격 | 단가 |
| --- | --- | --- | --- |
| 체험 | 검색 5,000회 | US$9.25 | US$1.85/1K 검색 |
| 빌더 | 검색 25,000회 | US$41.25 | US$1.65/1K 검색 |
| 프로덕션 | 검색 100,000회 | US$145 | US$1.45/1K 검색 |

모든 요금제에 포함: 상위 3개 페이지를 Markdown으로 읽기 · 국가, 언어, 시간, 도메인 필터 · 실패한 호출은 과금되지 않음 · 크레딧은 만료되지 않음

**결제 전 확인**

- 최소 충전 US$25. 암호화폐로 한 번 충전하면 잔액에서 모든 요금제를 구매할 수 있습니다.
- 잔액에 있는 금액은 만료되지 않으며, 원할 때 언제든 검색 크레딧을 구매하는 데 사용할 수 있습니다. 크레딧 팩이 최소 충전 금액보다 저렴한 경우, 최소 충전 금액을 채우기 위해서만 지불한 금액은 결제일로부터 30일 이내에 요청하시면 USDT 또는 USDC로 돌려드리며, 해당 금액이 아직 사용되지 않은 경우에만 적용됩니다. 잔액의 나머지 금액은 법률이 요구하는 경우를 제외하고는 반환되지 않습니다.
- 블록체인에서 결제가 확인되면 잔액에 반영됩니다. 일반적인 네트워크 확인 시간: BTC 약 20분 · USDT TRC-20 약 1분 · USDT ERC-20 약 5분 · USDC ERC-20 약 5분 · ETH 약 5분 · SOL 약 1분 · LTC 약 15분

## 실시간 웹 RAG: 자주 묻는 질문

### LangChain이나 LlamaIndex를 사용할 수 있나요?

네. [LangChain 및 LlamaIndex 페이지](https://llmwebsearch.com/ko/docs/langchain/)에서 검색을 retriever와 도구로 감쌀 수 있습니다.

### 이미 알고 있는 URL에서 검색할 수 있나요?

네, [extract 엔드포인트](https://llmwebsearch.com/ko/docs/extract/)로 가능합니다. 이미 URL을 알고 있는 페이지를 읽는 경우, 콘텐츠와 함께 반환되는 3개 페이지 단위로 크레딧 1개가 청구되며, 호출당 최대 20개 URL까지 가능합니다. 거부되거나 실패한 URL은 집계되지 않습니다.

### LLMWebSearch은 읽은 페이지를 제 대신 저장하나요?

아니요. 각 호출은 로그 한 줄을 남깁니다. 시간, 계정, 검색 쿼리의 처음 60자, 반환된 결과 및 페이지 수, 크레딧입니다. 로그는 30일 후 삭제됩니다. 저희가 읽은 페이지의 콘텐츠는 보관하지 않습니다. 계정 번호, 주문, 충전, 크레딧 합계는 계정이 존재하는 동안 보관되며, 이후에는 회계 관련 법률이 요구하는 기간 동안만 보관됩니다. 당국에는 법률이 강제하는 경우에만 기록을 제공합니다.

### 검색을 하나의 언어나 국가로 제한할 수 있나요?

네. `language`과 `country`을 설정하면 됩니다. 예를 들어 독일에서 독일어 결과를 받으려면 `language=de`과 `country=de`을 설정하세요.

---

LLMWebSearch: LLMWebSearch는 AI 에이전트를 위한 웹 검색 API로, 순위가 매겨진 결과와 함께 상위 페이지의 본문을 Markdown으로 반환하며, 신분증 업로드 없이 암호화폐로 결제합니다. US$1.20/1K 검색부터 시작하는 선불 크레딧은 만료되지 않습니다. KYC 없이 — 신분증도, 셀피도, 서류도 필요 없습니다. 암호화폐로 결제하세요.
