Langchain入门2-retrieval模块

本章主要以代码的形式展示

#加载文档#

#langchain_community一般存放的是社区组件,有很多的多样化功能
from langchain_community.document_loaders import WebBaseLoader
loader = WebBaseLoader("https://docs.smith.langchain.com/user_guide")

docs = loader.load()
#加载文档##

#加载embedding模型
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(
	api_key = "sk_",#来自于GPT_API_free的Github仓库
	base_url = "https://api.chatanywhere.tech/v1"
)
#加载embedding模型##

#分割文档并进行embedding#
from langchain_community.vectorstores import FAISS
from langchain_text_splitters import RecursiveCharacterTextSplitter


text_splitter = RecursiveCharacterTextSplitter()
documents = text_splitter.split_documents(docs)
vector = FAISS.from_documents(documents, embeddings)
#分割文档并进行embedding##

#设置根据上下文回答问题的模板#
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
	api_key = "sk_",
	base_url = "https://api.chatanywhere.tech/v1"
)
prompt = ChatPromptTemplate.from_template("""Answer the following question based only on the provided context:

<context>
{context}
</context>

Question: {input}""")
#设置根据上下文回答问题的模板##

#构建检索链#
document_chain = create_stuff_documents_chain(llm, prompt)
#构建检索链##

#通过上下文进行回答#
from langchain_core.documents import Document

document_chain.invoke({
    "input": "how can langsmith help with testing?",
    "context": [Document(page_content="langsmith can let you visualize test results")]
})

结果是:Langsmith can help visualize test results.但是通过指定内容进行回答失去了检索的本质。


#上面构建了stuff_documents_chain
#再将前面构建的向量库作为检索器
#检索器 | document_chain构建形成一个retrieval的模式进行检索。
#需要注意的是,要先构建document_chain形成一个<context>的标签,retrieval_chain会自动将document添加进去。
from langchain.chains import create_retrieval_chain

retriever = vector.as_retriever()
retrieval_chain = create_retrieval_chain(retriever, document_chain)

response = retrieval_chain.invoke({"input": "how can langsmith help with testing?"})
print(response["answer"])

# LangSmith offers several features that can help with testing:...
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值