Skip to main content
Notion 是一个支持改良版 Markdown 的协作平台,集成了看板、任务、Wiki 和数据库。它是一个集笔记、知识与数据管理、项目和任务管理于一体的全能工作空间。
NotionDBLoader 是一个用于从 Notion 数据库加载内容的 Python 类。它从数据库中检索页面,读取其内容,并返回文档对象列表。NotionDirectoryLoader 用于从 Notion 数据库转储中加载数据。

依赖项

  • 一个 Notion 数据库
  • Notion 集成令牌

设置

1. 创建 Notion 表格数据库

在 Notion 中创建一个新的表格数据库。您可以向数据库添加任意列,这些列将被视为元数据。例如,您可以添加以下列:
  • Title:将 Title 设置为默认属性。
  • Categories:一个多选属性,用于存储与页面关联的类别。
  • Keywords:一个多选属性,用于存储与页面关联的关键词。
将内容添加到数据库中每个页面的正文中。NotionDBLoader 将从这些页面中提取内容和元数据。

2. 创建 Notion 集成

要创建 Notion 集成,请按照以下步骤操作:
  1. 访问 Notion Developers 页面,并使用您的 Notion 账户登录。
  2. 点击 ”+ New integration” 按钮。
  3. 为您的集成命名,并选择您的数据库所在的工作区。
  4. 选择所需的能力,此扩展只需要”读取内容”能力。
  5. 点击 “Submit” 按钮以创建集成。 集成创建后,您将获得一个 集成令牌(API 密钥)。请复制并妥善保存该令牌,因为您将需要它来使用 NotionDBLoader。

3. 将集成连接到数据库

要将集成连接到数据库,请按照以下步骤操作:
  1. 在 Notion 中打开您的数据库。
  2. 点击数据库视图右上角的三点菜单图标。
  3. 点击 ”+ New integration” 按钮。
  4. 找到您的集成,您可能需要在搜索框中输入其名称。
  5. 点击 “Connect” 按钮,将集成连接到数据库。

4. 获取数据库 ID

要获取数据库 ID,请按照以下步骤操作:
  1. 在 Notion 中打开您的数据库。
  2. 点击数据库视图右上角的三点菜单图标。
  3. 从菜单中选择”复制链接”,将数据库 URL 复制到剪贴板。
  4. 数据库 ID 是 URL 中的那串长字母数字字符串,通常如下所示:www.notion.so/username/8935f9d140a04f95a872520c4f123456?v=… 在此示例中,数据库 ID 为 8935f9d140a04f95a872520c4f123456。
数据库设置完成,并获得集成令牌和数据库 ID 后,您现在可以使用 NotionDBLoader 代码来加载 Notion 数据库中的内容和元数据。

5. 安装

安装 langchain-community 集成包。
pip install -qU langchain-community

Notion 数据库加载器

NotionDBLoader 是 langchain 包中文档加载器的一部分。您可以按如下方式使用它:
from getpass import getpass

NOTION_TOKEN = getpass()
DATABASE_ID = getpass()
········
········
from langchain_community.document_loaders import NotionDBLoader
loader = NotionDBLoader(
    integration_token=NOTION_TOKEN,
    database_id=DATABASE_ID,
    request_timeout_sec=30,  # optional, defaults to 10
)
docs = loader.load()
print(docs)

Notion 目录加载器

设置

从 Notion 导出您的数据集。您可以点击右上角的三个点,然后点击 Export 来完成此操作。 导出时,请确保选择 Markdown & CSV 格式选项。 这将在您的下载文件夹中生成一个 .zip 文件。将该 .zip 文件移动到此仓库中。 运行以下命令解压 zip 文件(根据需要将 Export... 替换为您自己的文件名)。
unzip Export-d3adfe0f-3131-4bf3-8987-a52017fc1bae.zip -d Notion_DB

用法

运行以下命令来导入您刚刚下载的数据。
from langchain_community.document_loaders import NotionDirectoryLoader

loader = NotionDirectoryLoader("Notion_DB")
docs = loader.load()