LangChain:基于ChatGPT对话私有数据

一、架构图:

二、思路:

  1. 通过embbeding获得文本的语义,通过向量数据库获得近似记录,通过chatGPT得到问答内容
  2. 将文件拆分并embbeding后存入向量数据库
  3. 将用户问题embbeding后从向量数据库中找近似的文档数据作为prompt上下文

三、核心代码:

# pip install langchain chromadb openai tiktoken

import os
from langchain.document_loaders import TextLoader
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chains import ConversationalRetrievalChain
from langchain.memory import ConversationBufferMemory
from langchain.llms import OpenAI

# os.environ['OPENAI_API_KEY'] = 'ENTER YOUR API KEY'

# 1、加载文件
file_path = "./孔乙己.txt"
loader = TextLoader(file_path)

# 2、拆分文件
pages = loader.load_and_split()
embeddings = OpenAIEmbeddings()

# 3、将拆分后的文本embeddings后存储到Vector数据库
vectordb = Chroma.from_documents(pages, embedding=embeddings,
                                 persist_directory=".")
vectordb.persist()

# 4、保留对话记录到内存
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)

# 5、将用户的query文本embeddings后到向量数据库查询近似的记录作为prompt,一起发送给LLM,获得结果
self_qa = ConversationalRetrievalChain.from_llm(OpenAI(temperature=0.9), vectordb.as_retriever(), memory=memory)

query = "孔乙己欠了酒店多少钱?"
result = self_qa({"question": query})
print("Answer:" + result["answer"])
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值