LangchainKnowledgeBase 允许我们将 LangChain 检索器或向量存储用作知识库。
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 类的子类,拥有相同的参数。
开发者资源
Responses are generated using AI and may contain mistakes.