引言
维基百科是全球最大的在线百科全书,提供多语言的知识资源。对于开发者而言,能够从维基百科高效检索信息是非常有用的。本文将介绍如何使用Wikipedia Retriever从维基百科获取信息,并展示如何将其集成到大型语言模型(LLM)的应用中。
主要内容
1. Wikipedia Retriever的概述
Wikipedia Retriever是一个工具,专门用于从维基百科中提取文档。它是langchain-community包的一部分,并使用wikipedia Python包进行获取。
2. 设置和安装
要使用Wikipedia Retriever,首先需要安装必要的Python包:
%pip install -qU langchain_community wikipedia
3. 实例化检索器
检索器可以通过以下方式进行实例化:
from langchain_community.retrievers import WikipediaRetriever
retriever = WikipediaRetriever(
lang="en", # 可以指定语言
load_max_docs=10, # 控制下载的文档数量
load_all_available_meta=False # 是否下载所有元数据
)
4. 使用检索信息
可以使用get_relevant_documents()方法来获取特定主题的文档:
docs = retriever.invoke("TOKYO GHOUL")
print(docs[0].page_content[:400]) # 打印部分内容
5. 将Retriever集成到LLM中
Wikipedia Retriever可以与LLM结合,通过链的形式实现复杂的查询处理。以下是一个集成示例:
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
# 初始化语言模型
llm = ChatOpenAI(model="gpt-4o-mini")
# 创建提示模板
prompt = ChatPromptTemplate.from_template(
"""
Answer the question based only on the context provided.
Context: {context}
Question: {question}
"""
)
# 格式化文档
def format_docs(docs):
return "\n\n".join(doc.page_content for doc in docs)
# 建立执行链
chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)
# 执行链调用
response = chain.invoke(
"Who is the main character in `Tokyo Ghoul` and does he transform into a ghoul?"
)
print(response)
常见问题和解决方案
- 数据限制:默认情况下,Wikipedia Retriever下载100个文档,建议根据实际需求设置
load_max_docs以减少等待时间。 - 网络限制:在某些地区访问维基百科可能存在网络限制,建议使用API代理服务提高访问稳定性。
总结和进一步学习资源
Wikipedia Retriever为开发者提供了一种高效访问维基百科内容的方法,并能与LLM无缝集成。欲了解更多详细信息,请查阅以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---