> ## Documentation Index
> Fetch the complete documentation index at: https://ikun.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# LangChain 知识库

> 了解如何将 LangChain 检索器或向量存储用作知识库。

**LangchainKnowledgeBase** 允许我们将 LangChain 检索器或向量存储用作知识库。

## 用法

```shell theme={null}
pip install langchain
```

```python langchain_kb.py theme={null}
from agno.agent import Agent
from agno.knowledge.langchain import LangChainKnowledgeBase

from langchain.embeddings import OpenAIEmbeddings
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Chroma

chroma_db_dir = "./chroma_db"


def load_vector_store():
    state_of_the_union = ws_settings.ws_root.joinpath("data/demo/state_of_the_union.txt")
    # -*- 加载文档
    raw_documents = TextLoader(str(state_of_the_union)).load()
    # -*- 将其拆分成块
    text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
    documents = text_splitter.split_documents(raw_documents)
    # -*- 为每个块嵌入向量并加载到向量存储中
    Chroma.from_documents(documents, OpenAIEmbeddings(), persist_directory=str(chroma_db_dir))


# -*- 获取向量数据库
db = Chroma(embedding_function=OpenAIEmbeddings(), persist_directory=str(chroma_db_dir))
# -*- 从向量存储创建检索器
retriever = db.as_retriever()

# -*- 从向量存储创建知识库
knowledge_base = LangChainKnowledgeBase(retriever=retriever)

agent = Agent(knowledge_base=knowledge_base, add_references_to_prompt=True)
conv.print_response("What did the president say about technology?")
```

## 参数

| 参数              | 类型                   | 默认值    | 描述                                 |
| --------------- | -------------------- | ------ | ---------------------------------- |
| `loader`        | `Optional[Callable]` | `None` | LangChain 加载器。                     |
| `vectorstore`   | `Optional[Any]`      | `None` | LangChain 向量存储，用于创建检索器。            |
| `search_kwargs` | `Optional[dict]`     | `None` | 使用 LangChain 向量存储创建检索器时的搜索 kwargs。 |
| `retriever`     | `Optional[Any]`      | `None` | LangChain 检索器。                     |

`LangChainKnowledgeBase` 是 [AgentKnowledge](/reference/knowledge/base) 类的子类，拥有相同的参数。

## 开发者资源

* 查看 [Cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/agent_concepts/knowledge/langchain_kb.py)
