Skip to main content
Open In ColabOpen on GitHub

Apify 数据集

Apify Dataset 是一个可扩展的仅追加存储,具有顺序访问功能,专为存储结构化网络抓取结果(如产品列表或Google SERPs)而设计,然后可以将它们导出为各种格式,如JSON、CSV或Excel。数据集主要用于保存Apify Actors的结果——这些是无服务器云程序,适用于各种网络抓取、爬取和数据提取用例。

本笔记本展示了如何将Apify数据集加载到LangChain。

先决条件

你需要在Apify平台上有一个现有的数据集。这个例子展示了如何加载由Website Content Crawler生成的数据集。

%pip install --upgrade --quiet  apify-client

首先,将 ApifyDatasetLoader 导入到你的源代码中:

from langchain_community.document_loaders import ApifyDatasetLoader
from langchain_core.documents import Document

然后提供一个函数,将Apify数据集记录字段映射到LangChain Document格式。

例如,如果你的数据集项结构如下:

{
"url": "https://apify.com",
"text": "Apify is the best web scraping and automation platform."
}

下面的代码中的映射函数会将它们转换为LangChain Document格式,以便您可以进一步将它们与任何LLM模型一起使用(例如用于问答)。

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 is a platform for developing, running, and sharing serverless cloud programs. It enables users to create web scraping and automation tools and publish them on the Apify platform.

https://docs.apify.com/platform/actors, https://docs.apify.com/platform/actors/running/actors-in-store, https://docs.apify.com/platform/security, https://docs.apify.com/platform/actors/examples

这个页面有帮助吗?