> For the complete documentation index, see [llms.txt](https://docs.rememberizer.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rememberizer.ai/zh-cn/kai-fa-zhe-zi-yuan/integration-options/langchain-integration.md).

# LangChain 集成

## LangChain 集成

Rememberizer 通过 `RememberizerRetriever` 类与 LangChain 集成，使您能够轻松地将 Rememberizer 的语义搜索功能纳入您的 LangChain 驱动的应用程序中。本指南解释了如何设置和使用此集成，以构建具有访问您的知识库的高级 LLM 应用程序。

### 介绍

LangChain 是一个流行的框架，用于构建大型语言模型（LLMs）应用程序。通过将 Rememberizer 与 LangChain 集成，您可以：

* 在 RAG（检索增强生成）应用程序中使用您的 Rememberizer 知识库
* 创建可以访问您的文档和数据的聊天机器人
* 构建利用您的知识的问答系统
* 开发能够搜索和推理您信息的代理

该集成可在 `langchain_community.retrievers` 模块中使用。

{% embed url="<https://python.langchain.com/docs/integrations/retrievers/rememberizer/>" %}

### 开始使用

#### 先决条件

在开始之前，您需要：

1. 一个创建了公共知识的 Rememberizer 账户
2. 一个用于访问您的公共知识的 API 密钥
3. 安装了 LangChain 的 Python 环境

有关创建公共知识和生成 API 密钥的详细说明，请参见 [注册和使用 API 密钥](https://docs.rememberizer.ai/developer/registering-and-using-api-keys)。

#### 安装

安装所需的包：

```bash
pip install langchain langchain_community
```

如果您计划使用 OpenAI 模型（如下例所示）：

```bash
pip install langchain_openai
```

#### 认证设置

有两种方法可以验证 `RememberizerRetriever`：

1. **环境变量**：设置 `REMEMBERIZER_API_KEY` 环境变量

   ```python
   import os
   os.environ["REMEMBERIZER_API_KEY"] = "rem_ck_your_api_key"
   ```
2. **直接参数**：在初始化检索器时直接传递 API 密钥

   ```python
   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 检索文档的简单示例：

```python
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`: 关于文档的附加信息

元数据结构示例：

```python
{
  '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 形成答案的问答系统：

```python
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 [检索器概念指南](https://python.langchain.com/docs/concepts/#retrievers)
* LangChain [检索器使用指南](https://python.langchain.com/docs/how_to/#retrievers)
* Rememberizer [API 文档](https://docs.rememberizer.ai/developer/api-docs/)
* Rememberizer 中的 [向量存储](https://docs.rememberizer.ai/developer/vector-stores)
* [创建一个 Rememberizer GPT](/zh-cn/kai-fa-zhe-zi-yuan/integration-options/creating-a-rememberizer-gpt.md) - 一种 AI 集成的替代方法


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.rememberizer.ai/zh-cn/kai-fa-zhe-zi-yuan/integration-options/langchain-integration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
