AmazonBedrockKnowledgeBaseRetriever
AmazonBedrockKnowledgeBaseRetriever
Amazon Bedrock Managed Knowledge Base에서 문서를 검색하는 Retriever예요.
파이프라인에서 가장 흔한 위치:
- RAG 파이프라인에서 ChatPromptBuilder 앞
- 의미 검색(semantic search) 파이프라인의 마지막 컴포넌트
필수 init 변수: knowledge_base_id — Amazon Bedrock Knowledge Base ID. AWS_KNOWLEDGE_BASE_ID 환경 변수로 대체 가능
선택 init 변수: aws_access_key_id(AWS_ACCESS_KEY_ID 환경 변수로 설정 가능), aws_secret_access_key(AWS_SECRET_ACCESS_KEY 환경 변수로 설정 가능), aws_session_token(AWS_SESSION_TOKEN 환경 변수로 설정 가능), aws_region_name(AWS_DEFAULT_REGION 환경 변수로 설정 가능), aws_profile_name(AWS_PROFILE 환경 변수로 설정 가능), number_of_results(반환할 최대 결과 수, 기본 5), use_agentic_retrieval(True면 표준 Retrieve API로 폴백하기 전에 Agentic Retrieve API를 먼저 시도, 기본은 USE_AGENTIC_RETRIEVAL 환경 변수 또는 True)
필수 run 변수: query — 문자열
선택 run 변수: top_k — 반환할 최대 결과 수. 제공되면 number_of_results를 덮어씀
출력 변수: documents — Documents 목록
API reference: Amazon Bedrock
GitHub link: https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/amazon_bedrock/
Package name: amazon-bedrock-haystack
출처: 문서
본문
Overview
AmazonBedrockKnowledgeBaseRetriever는 Amazon Bedrock Managed Knowledge Base에서 Documents를 가져와요. 대부분의 다른 Retriever와 달리 Haystack Document Store나 Embedder가 필요 없어요. 인덱싱과 임베딩은 전부 AWS가 처리하고, 컴포넌트는 Knowledge Base를 검색할 텍스트 query만 있으면 됩니다.
기본적으로 Retriever는 Agentic Retrieve API를 먼저 시도하고, 설정된 Knowledge Base에서 agentic 검색을 사용할 수 없으면 표준 Retrieve API로 폴백해요. 이 동작은 use_agentic_retrieval init 파라미터나 USE_AGENTIC_RETRIEVAL 환경 변수로 제어할 수 있습니다.
반환되는 각 Document에는 score와 출처 메타데이터가 포함돼요: source(기본 콘텐츠의 S3, 웹, Confluence, Salesforce, SharePoint, 또는 커스텀 문서 위치), knowledge_base_id, knowledge_base_type이 있죠.
이 컴포넌트는 인증에 AWS를 사용해요. AWS CLI로 IAM을 통해 인증할 수 있습니다. IAM 아이덴티티 기반 정책 설정 방법은 공식 문서를 참고하세요.
AWS 환경이 올바르게 설정돼 있다면 자격 증명은 필요 없어요. 환경이나 AWS 설정 파일에서 자동으로 로드되기 때문이죠. AWS 환경이 설정돼 있지 않다면 aws_access_key_id, aws_secret_access_key, aws_region_name을 환경 변수로 설정하거나 Secret 인자로 전달하세요.
Installation
Amazon Bedrock 통합을 설치하세요:
pip install amazon-bedrock-haystack
또한 문서가 이미 수집된 Amazon Bedrock Knowledge Base가 있어야 해요. 그 ID를 AWS_KNOWLEDGE_BASE_ID 환경 변수로 설정하거나, knowledge_base_id init 파라미터로 직접 전달하세요.
Usage
On its own
from haystack.utils import Secret
from haystack_integrations.components.retrievers.amazon_bedrock import (
AmazonBedrockKnowledgeBaseRetriever,
)
retriever = AmazonBedrockKnowledgeBaseRetriever(
knowledge_base_id="ABCDEFGHIJ",
aws_region_name=Secret.from_token("eu-central-1"),
)
result = retriever.run(query="What are the benefits of managed knowledge bases?")
for doc in result["documents"]:
print(doc.content)
print(doc.meta["source"])
print(doc.score)
In a RAG pipeline
from haystack import Pipeline
from haystack.components.builders import ChatPromptBuilder
from haystack.dataclasses import ChatMessage
from haystack.utils import Secret
from haystack_integrations.components.generators.amazon_bedrock import (
AmazonBedrockChatGenerator,
)
from haystack_integrations.components.retrievers.amazon_bedrock import (
AmazonBedrockKnowledgeBaseRetriever,
)
template = [
ChatMessage.from_user(
"""
Given these documents, answer the question.\nDocuments:
{% for doc in documents %}
{{ doc.content }}
{% endfor %}
\nQuestion: {{question}}
\nAnswer:
""",
),
]
rag_pipeline = Pipeline()
rag_pipeline.add_component(
"retriever",
AmazonBedrockKnowledgeBaseRetriever(
knowledge_base_id="ABCDEFGHIJ",
aws_region_name=Secret.from_token("eu-central-1"),
),
)
rag_pipeline.add_component(
"prompt_builder",
ChatPromptBuilder(template=template, required_variables="*"),
)
rag_pipeline.add_component(
"llm", AmazonBedrockChatGenerator(model="global.anthropic.claude-sonnet-4-6"))
rag_pipeline.connect("retriever.documents", "prompt_builder.documents")
rag_pipeline.connect("prompt_builder.prompt", "llm.messages")
question = "What are the benefits of managed knowledge bases?"
result = rag_pipeline.run(
{
"retriever": {"query": question},
"prompt_builder": {"question": question},
},
)
print(result["llm"]["replies"][0].text)
더 알아보기 (Learn more)
- Amazon Bedrock Chat Generator — Bedrock 채팅 생성기
- Retrievers — Retriever 개요