架构与技术选型

更新时间:
复制为 MD 格式

表格存储知识库(RAG)的系统架构、数据模型、Embedding 和检索策略、Subspace 多租户设计,以及配额限制和适用性评估,帮助技术决策者判断产品是否适合自身业务场景。

系统架构

表格存储知识库服务采用全托管的 Serverless 架构,用户通过 API 与服务交互,底层资源由平台自动管理。

image.png

数据流转过程:

  1. 调用 AddDocuments 接口,指定 OSS 文件路径(或通过 SDK 上传本地文件)。

  2. 系统从 OSS 读取文件,自动完成文档解析和智能切片。

  3. 对每个切片调用 Embedding 模型生成向量,写入 Tablestore 的 Chunk 表。

  4. 自动构建向量索引和全文索引。

  5. 调用 Retrieve 接口时,系统执行混合检索并返回相关Chunk结果。

所有数据(原始文档、解析结果、向量数据)均存储在用户账号的 OSS 和 Tablestore 内。服务本身不持有任何客户数据。存储与计算分离,独立计费。

数据模型

知识库的数据按五层实体组织:

实体

说明

Project

顶层项目,对应一个表格存储实例。一个 Project 下最多创建 256 个知识库。

KnowledgeBase

知识库,每个知识库对应一张 Document 表、一张 Chunk 表和一张索引表。单个知识库最大支持 1 亿级文档。

Document

文档记录,关联 OSS 文件,记录文档状态和元数据。

Chunk

文档切片,存储向量数据和原文内容,是检索的最小单元。

Index

索引表,存储向量数据,检索增强内容,是检索的最小单元。

系统自动在 Tablestore 中创建对应的数据表:

  • Document 表:使用{知识库名}_{知识库 id}

  • Chunk 表:使用 {知识库名}_{知识库 id}_chunk

  • Index 表:使用 {知识库名}_{知识库 id}_index

image.png

数据源

知识库的数据源为阿里云对象存储(OSS)。不论通过哪种方式上传,文档的原始数据都存储在自己的 OSS Bucket 内。

知识库需要对 OSS Bucket 进行读写操作:读取原始文档进行解析和切片,将解析过程的中间结果写回 OSS。

支持以下三种方式将文档导入知识库:

  • 上传本地文件:指定本地文件或目录,SDK 自动上传到 OSS 后添加到知识库。如果是目录,会递归遍历所有文件。

  • 添加 OSS 文件:文件已在 OSS 上时,直接指定 OSS 路径添加到知识库,省去上传步骤。

  • OSS 目录批量导入:指定 OSS 目录路径,系统自动递归扫描目录下所有文件。支持通过 inclusionFiltersexclusionFilters 按文件名模式过滤。

每种方式的详细用法参见文档管理

Embedding 配置

Embedding 配置决定了文档切片如何被向量化,在创建知识库时指定。

配置项

说明

provider

模型提供方。bailian(百炼内置)或 custom(自定义)

model

模型名称。百炼支持 text-embedding-v3text-embedding-v4

dimension

向量维度。例如 text-embedding-v4 对应 1024 维

url

custom 模式需要,需提前联系表格存储注册有效 URL

apiKey

custom 模式需要

不传 embeddingConfiguration 时,系统默认使用百炼 text-embedding-v4 模型(1024 维),适用于大多数场景。

重要

Embedding 配置创建后不可修改。如需更换模型或维度,必须删除并重建知识库。创建前应充分评估模型选型。

选型建议:

  • 通用中英文场景:推荐 text-embedding-v4(1024 维),在语义理解和性能之间取得较好平衡。

  • 已有自研或第三方 Embedding 服务:使用 custom 模式接入,保持技术栈统一。

  • 维度越高语义表达越丰富,但存储和计算成本也越高。1024 维是大多数场景的推荐选择。

检索策略概述

调用 Retrieve 接口时,检索配置(retrievalConfiguration)按以下优先级确定:

优先级

来源

说明

1(最高)

Retrieve 接口参数

本次请求中传入的配置,仅对当次生效

2

知识库级别配置

创建知识库时设定,可通过 UpdateKnowledgeBase 修改

3(最低)

系统默认值

向量 + 全文混合检索,WEIGHT 加权融合(向量 0.7 : 全文 0.3)

检索类型

类型

说明

适用场景

DENSE_VECTOR

向量检索,基于语义相似度

用自然语言描述需求,需要理解语义

FULL_TEXT

全文检索,基于关键词匹配

输入精确关键词、专有名词、编号

建议同时开启两种检索类型,通过 Rerank 机制融合结果。

Rerank 排序策略

类型

说明

适用场景

RRF

按排名倒数加权融合,无需额外模型调用

通用场景,延迟低

WEIGHT

按比例加权向量与全文检索得分

需要精细控制两路检索的贡献比例

MODEL

调用 Rerank 模型对候选结果重排序

对排序质量要求高,可接受额外延迟

检索策略的详细配置和调优方法参见检索和排序

Subspace 多租户

Subspace 是知识库内的数据隔离分区,适用于在同一知识库内按用户、部门或租户隔离数据的场景。创建知识库时设置 "subspace": true 开启。

核心规则:

  • 开启 Subspace 后,所有文档操作(添加/查询/删除/列出)和检索都必须指定 subspace 字段,否则报错。

  • Retrieve 支持同时查询多个 Subspace(传入列表),最多 32 个。

  • Subspace 名称最大长度 128 字符。

  • Subspace 开关创建后不可修改。

在企业环境中,同一部门的每位员工有各自的文档。部门管理员创建一个知识库并开启 Subspace,为每位员工分配一个独立的 Subspace(如 employee_zhangsanemployee_lisi)。每位员工的文档互不可见,管理员统一管控知识库配置。当需要跨员工检索时,在 Retrieve 时传入多个 Subspace 即可联合检索。

Subspace 与多知识库的选择

维度

Subspace

多知识库

隔离粒度

同一知识库内的逻辑分区

完全独立的知识库

Embedding 配置

共享同一配置

每个知识库独立配置

检索范围

可跨 Subspace 联合检索

只能在单个知识库内检索

管理成本

低(一个知识库管理所有租户)

高(需管理多个知识库)

适用场景

同质化数据的多租户隔离

不同业务域、不同 Embedding 需求

配额与限制

知识库

限制项

限制值

单 Project 知识库数量

最大 256

单知识库文档数

最大 1 亿

知识库名称长度

1–64 字符,字母开头,仅允许字母/数字/下划线

知识库描述长度

最大 4KB

Tags 总长度

最大 4KB

Metadata 字段数

最多 200 个

Metadata 字段名长度

最大 128 字符

文档

限制项

限制值

单文件大小

最大 50MB

单请求文档数(AddDocuments)

最多 10 个

Metadata 总大小(key + value)

最大 4KB

Subspace 名称长度

最大 128 字符

ListDocuments 的 Subspace 列表

最多 10 个

检索

限制项

限制值

检索文本长度

最长 128 字符或汉字

Retrieve 的 Subspace 列表

最多 32 个

向量检索返回数量

最大 100

全文检索返回数量

最大 100

切片更新

限制项

限制值

单请求切片更新数

最多 10 个

分页

接口

maxResults 默认值

maxResults 最大值

ListKnowledgeBase

10

100

ListDocuments

10

1000

ListChunks

10

1000

支持文档格式

格式

扩展名

PDF

.pdf

Word

.doc.docx

Excel

.xls.xlsx

PowerPoint

.ppt.pptx

纯文本

.txt

Markdown

.md

适用性评估

推荐使用的场景:

  • 为 LLM 应用构建 RAG 检索能力

  • 需要向量检索 + 全文检索的混合检索

  • 需要多租户数据隔离

  • 文档规模从几百到百亿级

  • 对数据安全有严格要求(数据不出自己的账户)

  • 希望按量付费、零运维

需要评估的场景:

  • 对文档索引实时性要求极高(文档上传到可检索是异步过程,存在处理延迟)

  • 需要自定义切片策略(当前为系统自动切片)

不推荐的场景:

  • 纯结构化数据查询(建议使用表格存储宽表模型或关系型数据库)

  • 需要实时流式数据索引(建议直接使用Tablestore多元索引)