LangChain 集成
了解如何将 Rememberizer 作为 LangChain 检索器集成,以便为您的 LangChain 应用程序提供强大的向量数据库搜索访问。
LangChain 集成
Rememberizer 通过 RememberizerRetriever
类与 LangChain 集成,使您能够轻松地将 Rememberizer 的语义搜索功能纳入您的 LangChain 驱动的应用程序中。本指南解释了如何设置和使用此集成,以构建具有访问您的知识库的高级 LLM 应用程序。
介绍
LangChain 是一个流行的框架,用于构建大型语言模型(LLMs)应用程序。通过将 Rememberizer 与 LangChain 集成,您可以:
在 RAG(检索增强生成)应用程序中使用您的 Rememberizer 知识库
创建可以访问您的文档和数据的聊天机器人
构建利用您的知识的问答系统
开发能够搜索和推理您信息的代理
该集成可在 langchain_community.retrievers
模块中使用。
开始使用
先决条件
在开始之前,您需要:
一个创建了公共知识的 Rememberizer 账户
一个用于访问您的公共知识的 API 密钥
安装了 LangChain 的 Python 环境
有关创建公共知识和生成 API 密钥的详细说明,请参见 注册和使用 API 密钥。
安装
安装所需的包:
pip install langchain langchain_community
如果您计划使用 OpenAI 模型(如下例所示):
pip install langchain_openai
认证设置
有两种方法可以验证 RememberizerRetriever
:
环境变量:设置
REMEMBERIZER_API_KEY
环境变量import os os.environ["REMEMBERIZER_API_KEY"] = "rem_ck_your_api_key"
直接参数:在初始化检索器时直接传递 API 密钥
retriever = RememberizerRetriever(rememberizer_api_key="rem_ck_your_api_key")
配置选项
RememberizerRetriever
类接受以下参数:
top_k_results
int
10
从搜索中返回的文档数量
rememberizer_api_key
str
None
用于身份验证的 API 密钥(如果设置为环境变量,则为可选)
在后台,检索器通过额外的可配置参数向 Rememberizer 的搜索端点发出 API 调用:
prev_chunks
包含的匹配块之前的块数(默认:2)
next_chunks
包含的匹配块之后的块数(默认:2)
return_full_content
是否返回完整文档内容(默认:true)
基本用法
这是一个使用 LangChain 从 Rememberizer 检索文档的简单示例:
import os
from langchain_community.retrievers import RememberizerRetriever
# 设置您的 API 密钥
os.environ["REMEMBERIZER_API_KEY"] = "rem_ck_your_api_key"
# 初始化检索器
retriever = RememberizerRetriever(top_k_results=5)
# 获取与查询相关的文档
docs = retriever.get_relevant_documents(query="向量嵌入是如何工作的?")
# 显示第一个文档
if docs:
print(f"文档: {docs[0].metadata['name']}")
print(f"内容: {docs[0].page_content[:200]}...")
理解文档结构
检索器返回的每个文档都有:
page_content
: 匹配文档块的文本内容metadata
: 关于文档的附加信息
元数据结构示例:
{
'id': 13646493,
'document_id': '17s3LlMbpkTk0ikvGwV0iLMCj-MNubIaP',
'name': 'What is a large language model (LLM)_ _ Cloudflare.pdf',
'type': 'application/pdf',
'path': '/langchain/What is a large language model (LLM)_ _ Cloudflare.pdf',
'url': 'https://drive.google.com/file/d/17s3LlMbpkTk0ikvGwV0iLMCj-MNubIaP/view',
'size': 337089,
'created_time': '',
'modified_time': '',
'indexed_on': '2024-04-04T03:36:28.886170Z',
'integration': {'id': 347, 'integration_type': 'google_drive'}
}
高级示例
构建 RAG 问答系统
此示例创建一个从 Rememberizer 检索信息并使用 GPT-3.5 形成答案的问答系统:
import os
from langchain_community.retrievers import RememberizerRetriever
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
设置 API 密钥
os.environ["REMEMBERIZER_API_KEY"] = "rem_ck_your_api_key" os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
初始化检索器和语言模型
retriever = RememberizerRetriever(top_k_results=5) llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
创建检索问答链
qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", # 最简单的方法 - 只需将所有文档填入提示中 retriever=retriever, return_source_documents=True )
提问
response = qa_chain.invoke({"query": "在人工智能的背景下,RAG是什么?"})
打印答案
print(f"答案: {response['result']}") print("\n来源:") for idx, doc in enumerate(response['source_documents']): print(f"{idx+1}. {doc.metadata['name']}")
### 构建具有记忆的对话代理
此示例创建一个可以维护对话历史的对话代理:
```python
import os
from langchain_community.retrievers import RememberizerRetriever
from langchain.chains import ConversationalRetrievalChain
from langchain.memory import ConversationBufferMemory
from langchain_openai import ChatOpenAI
设置 API 密钥
os.environ["REMEMBERIZER_API_KEY"] = "rem_ck_your_api_key" os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
初始化组件
retriever = RememberizerRetriever(top_k_results=5) llm = ChatOpenAI(model_name="gpt-3.5-turbo") memory = ConversationBufferMemory( memory_key="chat_history", return_messages=True )
创建对话链
conversation = ConversationalRetrievalChain.from_llm( llm=llm, retriever=retriever, memory=memory )
示例对话
questions = [ "什么是RAG?", "大型语言模型如何使用它?", "这种方法有哪些局限性?", ]
for question in questions: response = conversation.invoke({"question": question}) print(f"问题: {question}") print(f"回答: {response['answer']}\n")
## 最佳实践
### 优化检索性能
1. **具体化查询**:更具体的查询通常会产生更好的结果
2. **调整 `top_k_results`**:从 3-5 个结果开始,根据应用需求进行调整
3. **使用上下文窗口**:检索器会自动包含与匹配块相关的上下文
### 安全考虑
1. **保护您的 API 密钥**:使用环境变量或秘密管理工具安全存储
2. **创建专用密钥**:为不同的应用程序创建单独的 API 密钥
3. **定期更换密钥**:定期生成新密钥并逐步淘汰旧密钥
### 集成模式
1. **预检索处理**:考虑对用户查询进行预处理,以提高搜索相关性
2. **后检索过滤**:在传递给 LLM 之前过滤或排序检索到的文档
3. **混合搜索**:使用 `EnsembleRetriever` 将 Rememberizer 与其他检索器结合
```python
from langchain.retrievers import EnsembleRetriever
from langchain_community.retrievers import RememberizerRetriever, WebResearchRetriever
创建检索器
rememberizer_retriever = RememberizerRetriever(top_k_results=3) web_retriever = WebResearchRetriever(...) # 配置另一个检索器
创建一个带权重评分的集成
ensemble_retriever = EnsembleRetriever( retrievers=[rememberizer_retriever, web_retriever], weights=[0.7, 0.3] # Rememberizer 的结果权重更高 )
## 故障排除
### 常见问题
1. **身份验证错误**:确认您的 API 密钥正确且已正确配置
2. **未返回结果**:确保您的常识包含相关信息
3. **速率限制**:注意高流量应用的 API 速率限制
### 调试提示
- 设置 LangChain 调试模式以查看详细的 API 调用:
```python
import langchain
langchain.debug = True
在传递给 LLM 之前检查原始搜索结果,以识别检索问题
相关资源
LangChain 检索器概念指南
LangChain 检索器使用指南
Rememberizer API 文档
Rememberizer 中的 向量存储
创建一个 Rememberizer GPT - 一种 AI 集成的替代方法
Last updated