在现代应用中,Wikipedia是一个无价的资源。它是全球最大和最常读的参考资料库,由志愿者通过MediaWiki系统共同维护。今天,我们将探讨如何使用WikipediaRetriever这个强大的工具来从wikipedia.org检索页面,并将其转化为用于后续处理的文档格式。
技术背景介绍
WikipediaRetriever是一个开源工具,集成在langchain-community包中,旨在简化从Wikipedia检索文章的过程。它可以将这些文章转化为一种结构化格式,方便后续处理,例如在大型语言模型(LLM)应用中使用。
核心原理解析
WikipediaRetriever的工作原理是通过API接口与Wikipedia交互,使用指定的参数来检索相关内容。它支持多种语言,可以根据需求下载特定数量的文档,并选择性地提取元数据。
代码实现演示
下面,我们将展示如何安装和使用WikipediaRetriever来获取特定主题的Wikipedia文章。
安装依赖
首先,我们需要安装langchain-community和wikipedia包:
%pip install -qU langchain_community wikipedia
实例化WikipediaRetriever
接下来,我们实例化一个WikipediaRetriever对象并使用它来检索信息:
from langchain_community.retrievers import WikipediaRetriever
# 初始化检索器
retriever = WikipediaRetriever()
# 通过关键词获取相关文档
docs = retriever.invoke("TOKYO GHOUL")
# 打印文档内容示例
print(docs[0].page_content[:400])
集成到LLM应用
WikipediaRetriever可以与LLM集成,通过链的形式进行复杂的查询和回答。下面是一个使用OpenAI GPT-4o-mini模型进行为例的链集成代码:
import os
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
# 设置API密钥
os.environ["OPENAI_API_KEY"] = 'your-api-key'
# 初始化LLM
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)
应用场景分析
- 教育行业: 用于获取特定主题的详细背景资料,辅助教学和学习。
- 内容创作: 帮助创作者快速获取主题相关信息,提高创作效率。
- 研究领域: 提供快速访问海量信息资源,支持科研人员的数据收集工作。
实践建议
- 语言参数: 如果需要检索非英文的Wikipedia文章,请确保正确设置语言参数。
- 性能优化: 在实验阶段调低文档下载数量,节省时间。
- 元数据选择: 根据实际需求选择是否加载所有元数据。
如果遇到问题欢迎在评论区交流。
—END—
1056

被折叠的 条评论
为什么被折叠?



