一、核心定义、支持平台与适用场景

  • 定义:从数据库、协作平台、API 等结构化数据源读取数据,实现数据的文本化转换与统一提取,适配 RAG 知识库构建需求。
  • 支持平台:涵盖主流数据库(MySQL、PostgreSQL)、企业协作平台(飞书文档、Notion、Confluence)及自定义 API。
  • 适用场景:企业知识库搭建、业务数据问答系统开发、内部文档检索等企业级 RAG 落地场景。

二、分类型实战总结(LangChain + LlamaIndex 双框架)

1. 数据库(MySQL / PostgreSQL)

核心目标:从关系型数据库中读取指定字段数据,转为 RAG 可处理的文档格式,支持精准筛选数据(如按状态筛选已发布文档)。

框架

核心加载器

关键操作

输出特点

LlamaIndex

DatabaseReader

通过 URI 连接数据库,执行 SQL 查询筛选数据

输出简洁,直接提取文本内容,可统计读取条数

LangChain

SQLDatabaseLoader

先创建数据库引擎,再执行 SQL 查询加载数据

保留字段映射关系,输出内容包含字段名与对应值

示例效果:均可稳定读取指定条件的数据(如示例中读取100条已发布文档),适配企业业务数据入库场景。

LlamaIndex 代码
from llama_index.readers.database import DatabaseReader

# 连接数据库
reader = DatabaseReader(
    uri="postgresql://user:pass@host:5432/db"
)

# 执行 SQL 查询
documents = reader.load_data(
    query="SELECT id, title, content FROM docs WHERE status='published';"
)

print(f"数据库读取条数:{len(documents)}")
print("第一条数据内容:", documents[0].text[:200])
输出示例
数据库读取条数:100
第一条数据内容: 标题:RAG 企业落地实践
内容:本文详细介绍企业级 RAG 系统构建流程,包括文档解析、分块、向量库构建、检索策略优化等。
LangChain 代码
from langchain_community.document_loaders import SQLDatabaseLoader
from sqlalchemy import create_engine

# 创建数据库引擎
engine = create_engine("postgresql://user:pass@host:5432/db")

# 加载数据
loader = SQLDatabaseLoader(
    query="SELECT id, title, content FROM docs WHERE status='published';",
    engine=engine
)
docs = loader.load()

print(f"数据库读取条数:{len(docs)}")
print("第一条数据:", docs[0].page_content[:200])
输出示例
数据库读取条数:100
第一条数据: id: 1
title: RAG 企业落地实践
content: 本文详细介绍企业级 RAG 系统构建流程...

2. 飞书文档

核心目标:读取企业飞书文档中的内容,实现内部知识库的统一接入,支持多文档批量读取。

框架

核心加载器

关键操作

输出特点

LlamaIndex

FeishuDocsReader

填入飞书 app_id、app_secret,指定多个文档ID批量读取

可统计读取文档数量,输出文档正文前N字预览

LangChain

FeishuDocsLoader

填入飞书授权信息,指定单个文档ID读取

直接输出文档正文,格式与LlamaIndex输出一致

示例效果:均可精准提取飞书文档正文(如技术规范、工作总结),适配企业内部文档检索场景。

LlamaIndex 代码
from llama_index.readers.feishu import FeishuDocsReader

# 填入飞书应用信息
reader = FeishuDocsReader(
    app_id="xxx",
    app_secret="xxx"
)

documents = reader.load_data(
    document_ids=["文档ID1", "文档ID2"]
)

print(f"飞书文档读取数量:{len(documents)}")
print("第一篇内容前200字:", documents[0].text[:200])
输出示例
飞书文档读取数量:2
第一篇内容前200字: 飞书知识库·技术规范
版本:2024.12
一、编码规范
二、接口设计
三、文档结构要求
LangChain 代码
from langchain_community.document_loaders import FeishuDocsLoader

loader = FeishuDocsLoader(
    app_id="xxx",
    app_secret="xxx",
    document_id="文档ID"
)
docs = loader.load()

print("飞书文档内容前200字:", docs[0].page_content[:200])
输出示例
飞书文档内容前200字: 飞书知识库·技术规范
版本:2024.12
一、编码规范
二、接口设计
三、文档结构要求

3. Notion 文档

核心目标:接入 Notion 知识库内容,支持两种读取方式(直接读取页面、加载本地导出文件),适配不同使用场景。

框架

核心加载器

关键操作

输出特点

LlamaIndex

NotionPageReader

使用 integration_token 授权,指定多个页面ID读取

可统计读取数量,输出文档正文预览,操作简洁

LangChain

NotionDirectoryLoader

加载本地 Notion 导出文件,无需在线授权

批量读取导出的所有文档,适配离线场景

示例效果:两种方式均可提取 Notion 文档核心内容(如学习笔记、知识库条目),适配不同授权/离线需求。

LlamaIndex 代码
from llama_index.readers.notion import NotionPageReader

reader = NotionPageReader(
    integration_token="secret_xxx"
)

documents = reader.load_data(
    page_ids=["page_id_1", "page_id_2"]
)

print(f"Notion 读取数量:{len(documents)}")
print("内容前200字:", documents[0].text[:200])
输出示例
Notion 读取数量:2
内容前200字: Notion 知识库 · RAG 学习笔记
1. 向量数据库选型
2. 文本分块策略
3. 检索优化方法
LangChain 代码
from langchain_community.document_loaders import NotionDirectoryLoader

# 加载 Notion 导出文件
loader = NotionDirectoryLoader("./notion_export")
docs = loader.load()

print(f"Notion 文档数量:{len(docs)}")
print("内容前200字:", docs[0].page_content[:200])
输出示例
Notion 文档数量:2
内容前200字: Notion 知识库 · RAG 学习笔记
1. 向量数据库选型
2. 文本分块策略
3. 检索优化方法

三、核心选型与注意事项

1. 框架选型逻辑

  • 追求简洁高效:优先选择 LlamaIndex,所有场景均支持一键授权/连接,代码更简洁,无需额外配置(如数据库无需手动创建引擎)。
  • 需要灵活扩展:优先选择 LangChain,支持自定义数据库引擎、离线加载等场景,适配复杂业务逻辑。

2. 关键注意事项

  • 授权信息:飞书、Notion 读取需提前获取对应授权信息(app_id、app_secret、integration_token),否则会导致加载失败。
  • 数据库配置:连接数据库时,需确保 URI/引擎配置正确(用户名、密码、主机、端口、数据库名无误),且具备对应查询权限。
  • 数据筛选:SQL 查询需精准编写,避免读取无关数据,提升 RAG 检索效率;文档读取可通过指定ID/目录,实现精准批量加载。
  • 格式统一:两种框架输出的文本内容格式一致,均可直接进入后续分块、向量化流程,无需额外格式转换。

四、一句话总结

结构化数据源读取核心是「授权/连接+精准筛选+文本化输出」,LlamaIndex 主打简洁高效,LangChain 侧重灵活扩展,可根据企业授权方式、业务需求选择适配框架,完美支撑企业级 RAG 知识库搭建。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐