BraveWebSearch

BraveWebSearch

Brave Search API로 웹을 검색하는 컴포넌트예요.

파이프라인에서 가장 흔한 위치: ChatPromptBuilder 앞, 또는 인덱싱 파이프라인의 맨 앞 필수 init 변수: api_key — Brave Search API 키. BRAVE_API_KEY 환경 변수로 설정 가능 필수 run 변수: query — 검색 쿼리 문자열 출력 변수: documents(검색 결과 콘텐츠와 메타데이터를 담은 Haystack Documents 목록), links(결과 URL 문자열 목록) API reference: Brave Search API GitHub link: https://github.com/deepset-ai/haystack-core-integrations/blob/main/integrations/brave/src/haystack_integrations/components/websearch/brave/brave_websearch.py Package name: brave-haystack

출처: 문서

본문

Overview

BraveWebSearch에 쿼리를 주면 Brave Search API로 웹을 검색해 관련 콘텐츠를 Haystack Document 객체로 반환합니다. 또한 소스 URL 목록도 반환해요.

Brave Search는 자체 웹 인덱스를 가진 독립적인 검색 엔진이에요. Google이나 Bing에 의존하지 않으면서 안정적이고 개인정보를 중시하는 웹 결과가 필요한 RAG 파이프라인에 아주 잘 맞습니다.

BraveWebSearch는 작동하려면 Brave Search API 키가 필요해요. 기본적으로 BRAVE_API_KEY 환경 변수를 찾습니다. 또는 초기화 때 api_key를 직접 전달할 수 있어요.

Usage

On its own

BraveWebSearch가 쿼리를 바탕으로 웹을 검색하고 Documents 목록을 반환하는 빠른 예시입니다.

from haystack_integrations.components.websearch.brave import BraveWebSearch
from haystack.utils import Secret

web_search = BraveWebSearch(
    api_key=Secret.from_env_var("BRAVE_API_KEY"),
    top_k=5,
)
query = "What is Haystack by deepset?"
response = web_search.run(query=query)
for doc in response["documents"]:
    print(doc.content)

In a pipeline

BraveWebSearch로 웹에서 답을 찾는 Retrieval-Augmented Generation(RAG) 파이프라인 예시예요.

from haystack import Pipeline
from haystack.utils import Secret
from haystack.components.builders.chat_prompt_builder import ChatPromptBuilder
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack_integrations.components.websearch.brave import BraveWebSearch
from haystack.dataclasses import ChatMessage

web_search = BraveWebSearch(
    api_key=Secret.from_env_var("BRAVE_API_KEY"),
    top_k=3,
)
prompt_template = [
    ChatMessage.from_system("You are a helpful assistant."),
    ChatMessage.from_user(
        "Given the information below:\n"
        "{% for document in documents %}{{ document.content }}\n{% endfor %}\n"
        "Answer the following question: {{ query }}.\nAnswer:",
    ),
]
prompt_builder = ChatPromptBuilder(
    template=prompt_template,
    required_variables={"query", "documents"},
)
llm = OpenAIChatGenerator(
    api_key=Secret.from_env_var("OPENAI_API_KEY"),
)

pipe = Pipeline()
pipe.add_component("search", web_search)
pipe.add_component("prompt_builder", prompt_builder)
pipe.add_component("llm", llm)
pipe.connect("search.documents", "prompt_builder.documents")
pipe.connect("prompt_builder.prompt", "llm.messages")

query = "What is Haystack by deepset?"
result = pipe.run(data={"search": {"query": query}, "prompt_builder": {"query": query}})
print(result["llm"]["replies"][0].text)

더 알아보기 (Learn more)

  • Web Search — 웹 검색 컴포넌트 개요
  • RAG — RAG 가이드