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 가이드