Amazon Bedrock 的知识库
概述
这将帮助你快速开始使用 AmazonKnowledgeBaseRetriever。如需了解 AmazonKnowledgeBaseRetriever 所有功能和配置的详细文档,请前往 API 参考。
Amazon Bedrock 的知识库是由 Amazon Web Services (AWS) 提供的端到端 RAG 工作流程的完全托管支持。 它提供了一整套数据摄入流程,将你的文档转换为嵌入(向量),并将这些嵌入存储在专用的向量数据库中。 Amazon Bedrock 的知识库支持多种流行的向量存储数据库,包括 Amazon OpenSearch Serverless 的向量引擎、Pinecone、Redis Enterprise Cloud、Amazon Aurora(即将推出)和 MongoDB(即将推出)。
集成详情
| 检索器 | 自托管 | 云服务 | 包 | Python 支持 |
|---|---|---|---|---|
| AmazonKnowledgeBaseRetriever | 🟠 (详见下方) | ✅ | @langchain/aws | ✅ |
AWS 知识库检索器可在你自己的 AWS 基础设施上运行,从这个意义上说它可以“自托管”。但无法在其他云提供商或本地环境中运行。
配置
要使用 AmazonKnowledgeBaseRetriever,你需要拥有一个 AWS 账户,以便管理你的索引和文档。在设置好账户后,设置以下环境变量:
process.env.AWS_KNOWLEDGE_BASE_ID=your-knowledge-base-id
process.env.AWS_ACCESS_KEY_ID=your-access-key-id
process.env.AWS_SECRET_ACCESS_KEY=your-secret-access-key
如果你想从单个查询中获得自动追踪,你也可以通过取消注释以下内容来设置你的 LangSmith API 密钥:
// process.env.LANGSMITH_API_KEY = "<YOUR API KEY HERE>";
// process.env.LANGSMITH_TRACING = "true";
安装
此检索器位于 @langchain/aws 包中:
:::提示 请参阅安装集成包的一般说明部分。 :::
- npm
- yarn
- pnpm
npm i @langchain/aws @langchain/core
yarn add @langchain/aws @langchain/core
pnpm add @langchain/aws @langchain/core
实例化
现在我们可以实例化检索器:
import { AmazonKnowledgeBaseRetriever } from "@langchain/aws";
const retriever = new AmazonKnowledgeBaseRetriever({
topK: 10,
knowledgeBaseId: process.env.AWS_KNOWLEDGE_BASE_ID,
region: "us-east-2",
clientOptions: {
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
},
},
});
用法
const query = "...";
await retriever.invoke(query);
在链式调用中使用
与其他检索器类似,AmazonKnowledgeBaseRetriever 可以通过链式调用集成到 LLM 应用程序中。
我们需要一个 LLM 或聊天模型:
Pick your chat model:
- Groq
- OpenAI
- Anthropic
- Google Gemini
- FireworksAI
- MistralAI
- VertexAI
Install dependencies
- npm
- yarn
- pnpm
npm i @langchain/groq
yarn add @langchain/groq
pnpm add @langchain/groq
Add environment variables
GROQ_API_KEY=your-api-key
Instantiate the model
import { ChatGroq } from "@langchain/groq";
const llm = new ChatGroq({
model: "llama-3.3-70b-versatile",
temperature: 0
});
Install dependencies
- npm
- yarn
- pnpm
npm i @langchain/openai
yarn add @langchain/openai
pnpm add @langchain/openai
Add environment variables
OPENAI_API_KEY=your-api-key
Instantiate the model
import { ChatOpenAI } from "@langchain/openai";
const llm = new ChatOpenAI({
model: "gpt-4o-mini",
temperature: 0
});
Install dependencies
- npm
- yarn
- pnpm
npm i @langchain/anthropic
yarn add @langchain/anthropic
pnpm add @langchain/anthropic
Add environment variables
ANTHROPIC_API_KEY=your-api-key
Instantiate the model
import { ChatAnthropic } from "@langchain/anthropic";
const llm = new ChatAnthropic({
model: "claude-3-5-sonnet-20240620",
temperature: 0
});
Install dependencies
- npm
- yarn
- pnpm
npm i @langchain/google-genai
yarn add @langchain/google-genai
pnpm add @langchain/google-genai
Add environment variables
GOOGLE_API_KEY=your-api-key
Instantiate the model
import { ChatGoogleGenerativeAI } from "@langchain/google-genai";
const llm = new ChatGoogleGenerativeAI({
model: "gemini-2.0-flash",
temperature: 0
});
Install dependencies
- npm
- yarn
- pnpm
npm i @langchain/community
yarn add @langchain/community
pnpm add @langchain/community
Add environment variables
FIREWORKS_API_KEY=your-api-key
Instantiate the model
import { ChatFireworks } from "@langchain/community/chat_models/fireworks";
const llm = new ChatFireworks({
model: "accounts/fireworks/models/llama-v3p1-70b-instruct",
temperature: 0
});
Install dependencies
- npm
- yarn
- pnpm
npm i @langchain/mistralai
yarn add @langchain/mistralai
pnpm add @langchain/mistralai
Add environment variables
MISTRAL_API_KEY=your-api-key
Instantiate the model
import { ChatMistralAI } from "@langchain/mistralai";
const llm = new ChatMistralAI({
model: "mistral-large-latest",
temperature: 0
});
Install dependencies
- npm
- yarn
- pnpm
npm i @langchain/google-vertexai
yarn add @langchain/google-vertexai
pnpm add @langchain/google-vertexai
Add environment variables
GOOGLE_APPLICATION_CREDENTIALS=credentials.json
Instantiate the model
import { ChatVertexAI } from "@langchain/google-vertexai";
const llm = new ChatVertexAI({
model: "gemini-1.5-flash",
temperature: 0
});
import { ChatPromptTemplate } from "@langchain/core/prompts";
import {
RunnablePassthrough,
RunnableSequence,
} from "@langchain/core/runnables";
import { StringOutputParser } from "@langchain/core/output_parsers";
import type { Document } from "@langchain/core/documents";
const prompt = ChatPromptTemplate.fromTemplate(`
Answer the question based only on the context provided.
Context: {context}
Question: {question}`);
const formatDocs = (docs: Document[]) => {
return docs.map((doc) => doc.pageContent).join("\n\n");
};
// See https://js.langchain.com/docs/tutorials/rag
const ragChain = RunnableSequence.from([
{
context: retriever.pipe(formatDocs),
question: new RunnablePassthrough(),
},
prompt,
llm,
new StringOutputParser(),
]);
:::提示
详见 我们的RAG教程 ,了解有关如上所示 RunnableSequence 的更多信息和示例。
:::
await ragChain.invoke("...");
API 参考
有关 AmazonKnowledgeBaseRetriever 所有功能和配置的详细文档,请访问 API 参考。
Related
- Retriever conceptual guide
- Retriever how-to guides