LangChain整合Chroma实现本地知识库问答

该文章演示了如何将本地文本数据通过LangChain库整合Chroma,创建一个基于SentenceTransformerEmbeddings的本地知识库。经过文本分割、embedding处理后,数据被存储并持久化。之后,使用OpenAI的GPT-3.5-Turbo模型,通过LangChain的VectorDBQA实现本地问答功能。
摘要由CSDN通过智能技术生成

LangChain整合Chroma实现本地知识库问答

将本地embedding数据存储到Chroma,然后使用LangChain调用openai api完成本地知识库问答

from langchain.vectorstores import Chroma
from langchain.embeddings import SentenceTransformerEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.llms import OpenAI
from langchain.chains import VectorDBQA
from langchain.document_loaders import TextLoader

import os
os.environ["OPENAI_API_KEY"] = 'sk-xxx'



# 加载数据,并转换为document格式
loader = TextLoader('state_of_the_union.txt')
documents = loader.load()
# 分割document
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)


# 使用本地模型进行embedding,并将嵌入后的数据存储到db路径下
persist_directory = 'db'
embedding = SentenceTransformerEmbeddings()
vectordb = Chroma.from_documents(documents=texts, embedding=embedding,          persist_directory=persist_directory)


# 持久化数据,并释放内存
vectordb.persist()
vectordb = None


# 从磁盘中加载数据
vectordb = Chroma(persist_directory=persist_directory, embedding_function=embedding)
# 使用LangChain的VectorDBQA链,来初始化qa对象
qa = VectorDBQA.from_chain_type(llm=OpenAI(model_name="gpt-3.5-turbo"),  chain_type="stuff", vectorstore=vectordb)


# 输入query,调用qa对象
query = "What did the president say about Ketanji Brown Jackson"
qa.run(query)
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值