LangChain 十行代碼實現(xiàn) 向量庫構(gòu)建+RAG鏈路

文心一言的key申請,參考:
LangChain 三行代碼實現(xiàn) 文心一言 Prompt+LLM 大模型問答
http://www.itdecent.cn/p/8ec9ea907446

上干貨:

from langchain_community.llms import QianfanLLMEndpoint
from langchain.vectorstores import Chroma
from langchain.chains import ConversationalRetrievalChain
from langchain.memory import ConversationBufferMemory
from langchain.embeddings.baidu_qianfan_endpoint import QianfanEmbeddingsEndpoint
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain.document_loaders import UnstructuredFileLoader

WENXIN_APP_Key = "your key"
WENXIN_APP_SECRET = "your secret"

# 1 構(gòu)建 檢索向量庫
# 1.1 加載長文檔
loader = UnstructuredFileLoader("test_data/test.txt")
document = loader.load()
# 1.2 chunk
text_splitter = RecursiveCharacterTextSplitter(chunk_size=384, chunk_overlap=0, separators=["\n\n", "\n", " ", "", "。", ","])
documents = text_splitter.split_documents(document)
# 1.3 向量模型,向量庫
embeddings = QianfanEmbeddingsEndpoint(qianfan_ak=WENXIN_APP_Key,qianfan_sk=WENXIN_APP_SECRET,model="Embedding-V1")
retriever = Chroma.from_documents(documents, embeddings).as_retriever()
# 2 定義問答大模型和消息記錄緩存
memory = ConversationBufferMemory(memory_key = "chat_history", return_messages=True)
llm = QianfanLLMEndpoint(model="ERNIE-Bot", qianfan_ak=WENXIN_APP_Key, qianfan_sk=WENXIN_APP_SECRET)
qa = ConversationalRetrievalChain.from_llm(llm, retriever, memory=memory)
result = qa({"question": "三級凍傷是什么意思"})
print(result)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容