登录
主页
RAG开发中文档切片、向量、检索结果三类数据对象定义
2026-06-16
  
1004
深数据
一、引言
1.背景与痛点
检索增强生成(RAG)已成为大模型落地企业知识库、智能问答、文档分析场景的核心技术方案,完整RAG链路分为:文档解析→文档切片→向量化生成→向量库存储→相似度检索→结果重排→上下文拼接→大模型生成七大环节。
当前行业内普遍存在数据对象无统一规范的核心问题:不同开发者、不同组件(切片器、Embedding模型、向量数据库、检索器、重排模块)自定义字段混乱,出现切片元数据丢失、向量与原文无法溯源、检索结果字段不统一、多模块联调兼容性差、排查链路故障困难等问题,极大提升了RAG系统开发、迭代、运维和组件替换成本。
2.标准化目标
•统一字段口径:规范全链路三类核心数据结构,实现切片、向量、检索结果数据一一映射、双向溯源;
•组件解耦兼容:适配主流开源/商用向量库(Milvus、Qdrant、FAISS、Pinecone)、主流切片算法(固定长度切片、语义切片、层级切片、标题感知切片)、通用Embedding模型;
•覆盖全业务场景:支持单文件知识库、多源异构文档(PDF、Word、网页、Markdown、表格)、多租户隔离、权限管控、上下文溯源、日志排查、增量更新全场景;
•轻量化无冗余:区分必选字段、可选扩展字段,兼顾基础版极简部署与企业级复杂业务部署需求。
3.适用范围
本标准适用于所有离线RAG知识库构建、在线实时问答RAG服务、Agent内置RAG检索模块、多模态文档RAG(文本模态),覆盖数据生产、存储、检索、后处理全生命周期,不涉及图片、音频、视频多模态向量特殊字段。
4.核心数据流转链路
原始文档 → 文档切片对象(Chunk) → Embedding编码 → 向量对象(Vector) → 向量库存储 → 文本Query向量化检索 → 原始检索结果对象 → 重排/过滤 → 标准检索结果对象(Retrieval Result) → 拼接Prompt输入大模型
二、通用基础规范(全对象统一约束)
1.数据格式与编码
•默认序列化格式:JSON;
•文本编码:UTF-8,禁止中文乱码;
•ID格式:全局唯一UUID(v4),禁止自增数字ID,适配分布式部署;
•时间戳:统一使用Unix毫秒时间戳。
2.公共通用字段(三类对象均携带)
以下为三类数据对象公共基础字段JSON标准化定义,包含字段类型、必填规则、详细释义:
json
{
\"common_fields\": [
{
\"field_name\": \"tenant_id\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"多租户ID,企业级部署必填,单租户可固定为default\"
},
{
\"field_name\": \"kb_id\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"知识库唯一标识,区分不同业务知识库\"
},
{
\"field_name\": \"create_time\",
\"data_type\": \"number\",
\"required\": true,
\"description\": \"数据生成毫秒时间戳\"
},
{
\"field_name\": \"update_time\",
\"data_type\": \"number\",
\"required\": false,
\"description\": \"数据最后更新毫秒时间戳,增量更新场景必填\"
}
]
}
3.版本兼容规则
•所有对象向下兼容:新增字段仅做扩展,不修改原有必选字段结构;
•禁止删除已有必选字段,避免上下游组件解析失败;
•数值类字段精度统一:向量浮点值保留6位小数,相似度分数保留4位小数。
三、文档切片对象(Chunk)标准化定义
1.对象定位
文档切片是RAG数据生产阶段的核心原始对象,是原始文档切割后的最小文本单元,所有向量数据均由切片文本生成,承担原文溯源、上下文拼接、文档定位、权限绑定作用,是整个RAG链路的数据根基。
2.完整字段定义
文档切片对象(Chunk)全量字段JSON标准化定义,区分一级字段、嵌套二级字段、数据类型、必填标识与业务说明:
json
{
\"chunk_object_fields\": [
{
\"primary_field\": \"chunk_id\",
\"sub_field\": \"-\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"切片全局唯一ID,与向量对象vector_id一一对应,双向溯源核心主键\"
},
{
\"primary_field\": \"doc_id\",
\"sub_field\": \"-\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"原始文档唯一ID,一个doc_id对应多个chunk_id\"
},
{
\"primary_field\": \"chunk_text\",
\"sub_field\": \"-\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"切片核心文本内容,输入Embedding模型的原始文本\"
},
{
\"primary_field\": \"chunk_meta\",
\"sub_field\": \"chunk_type\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"切片类型:fixed固定切片/semantic语义切片/hierarchical层级切片/title标题切片\"
},
{
\"primary_field\": \"chunk_meta\",
\"sub_field\": \"chunk_length\",
\"data_type\": \"number\",
\"required\": true,
\"description\": \"切片文本字符长度\"
},
{
\"primary_field\": \"chunk_meta\",
\"sub_field\": \"chunk_index\",
\"data_type\": \"number\",
\"required\": true,
\"description\": \"当前文档内切片序号,从0开始自增\"
},
{
\"primary_field\": \"doc_meta\",
\"sub_field\": \"doc_name\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"原始文档文件名\"
},
{
\"primary_field\": \"doc_meta\",
\"sub_field\": \"doc_type\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"文档格式:pdf/word/markdown/html/txt\"
},
{
\"primary_field\": \"doc_meta\",
\"sub_field\": \"page_no\",
\"data_type\": \"number[]\",
\"required\": false,
\"description\": \"切片所在文档页码,PDF类文档必填,纯文本为空数组\"
},
{
\"primary_field\": \"doc_meta\",
\"sub_field\": \"title_path\",
\"data_type\": \"string[]\",
\"required\": false,
\"description\": \"层级标题路径,如[\\\"一级标题\\\",\\\"二级标题\\\"],提升检索上下文精准度\"
},
{
\"primary_field\": \"permission\",
\"sub_field\": \"user_group\",
\"data_type\": \"string[]\",
\"required\": false,
\"description\": \"切片可见用户组,企业权限场景必填\"
},
{
\"primary_field\": \"extend\",
\"sub_field\": \"-\",
\"data_type\": \"object\",
\"required\": false,
\"description\": \"业务自定义扩展字段,预留自定义空间\"
}
]
}
3.约束规则
•chunk_id 全局唯一,且与下游向量vector_id完全一致,保证一对一溯源;
•禁止截断chunk_text原文,所有原文内容必须完整保留,用于检索结果展示与prompt拼接;
•层级切片场景下,支持parent_chunk_id字段,标识父级切片ID,适配父子切片联动检索。
4.标准JSON示例
json
{
\"tenant_id\": \"tenant_001\",
\"kb_id\": \"kb_finance_report\",
\"create_time\": 1718980000000,
\"chunk_id\": \"uuid-8f2a-4d11-b96c-xxxx\",
\"doc_id\": \"uuid-7e3c-2c09-a12d-xxxx\",
\"chunk_text\": \"2025年一季度企业营收同比增长12.3%,其中线上业务贡献65%营收增量,线下门店营收保持平稳\",
\"chunk_meta\": {
\"chunk_type\": \"semantic\",
\"chunk_length\": 76,
\"chunk_index\": 3
},
\"doc_meta\": {
\"doc_name\": \"2025一季度营收报告.pdf\",
\"doc_type\": \"pdf\",
\"page_no\": [5],
\"title_path\": [\"经营数据\", \"营收分析\"]
},
\"permission\": {
\"user_group\": [\"finance\", \"manager\"]
},
\"extend\": {}
}
四、向量对象(Vector)标准化定义
1.对象定位
向量对象是文档切片经过Embedding模型编码后的稠密向量数据,用于向量库相似度计算,核心作用是完成语义检索。该对象完全依托切片对象生成,不存储原始长文本,仅存储向量数值、模型信息、溯源ID,贴合向量数据库轻量化存储特性。
2.完整字段定义
向量对象(Vector)全量字段JSON标准化定义,贴合向量库存储规范,明确溯源、过滤与状态字段释义:
json
{
\"vector_object_fields\": [
{
\"primary_field\": \"vector_id\",
\"sub_field\": \"-\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"向量唯一ID,与上游chunk_id完全等同,核心溯源主键\"
},
{
\"primary_field\": \"embedding\",
\"sub_field\": \"-\",
\"data_type\": \"float[]\",
\"required\": true,
\"description\": \"稠密浮点向量数组,维度与Embedding模型保持一致(如1024/768/512维)\"
},
{
\"primary_field\": \"vector_meta\",
\"sub_field\": \"embedding_model\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"编码所用Embedding模型名称,如bge-m3、text-embedding-3\"
},
{
\"primary_field\": \"vector_meta\",
\"sub_field\": \"vector_dim\",
\"data_type\": \"number\",
\"required\": true,
\"description\": \"向量维度,用于校验向量合法性\"
},
{
\"primary_field\": \"vector_meta\",
\"sub_field\": \"text_md5\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"上游chunk_text文本MD5值,用于增量更新、文本变更校验\"
},
{
\"primary_field\": \"filter_tags\",
\"sub_field\": \"-\",
\"data_type\": \"object\",
\"required\": true,
\"description\": \"向量库结构化过滤标签,直接用于向量库where条件过滤,复用切片租户、知识库、文档信息\"
},
{
\"primary_field\": \"status\",
\"sub_field\": \"-\",
\"data_type\": \"number\",
\"required\": true,
\"description\": \"向量状态:0-禁用 1-正常 2-待更新,适配增量更新与脏数据清理\"
},
{
\"primary_field\": \"extend\",
\"sub_field\": \"-\",
\"data_type\": \"object\",
\"required\": false,
\"description\": \"向量库自定义扩展字段\"
}
]
}
3.约束规则
•vector_id = chunk_id,强制一对一绑定,禁止自定义向量ID;
•向量数组必须为浮点型,禁止整型存储,保证相似度计算精度;
•text_md5为增量更新核心字段:切片文本变更后MD5变化,自动触发向量重新生成与覆盖;
•不存储原始切片文本,原始文本通过vector_id反向查询切片数据库获取,节省向量库存储空间。
4.标准JSON示例
json
{
\"tenant_id\": \"tenant_001\",
\"kb_id\": \"kb_finance_report\",
\"create_time\": 1718980000000,
\"vector_id\": \"uuid-8f2a-4d11-b96c-xxxx\",
\"embedding\": [0.012345, -0.067891, 0.034567, ...],
\"vector_meta\": {
\"embedding_model\": \"bge-m3\",
\"vector_dim\": 1024,
\"text_md5\": \"d41d8cd98f00b204e9800998ecf8427e\"
},
\"filter_tags\": {
\"doc_id\": \"uuid-7e3c-2c09-a12d-xxxx\",
\"user_group\": [\"finance\", \"manager\"]
},
\"status\": 1,
\"extend\": {}
}
五、检索结果对象(Retrieval Result)标准化定义
1.对象定位
检索结果是向量库完成相似度召回、经过重排、过滤、去重后,最终输出给大模型生成模块的标准化数据对象,是RAG链路的输出层数据。该对象整合了向量相似度分数、切片原文、文档元数据、重排分数、过滤状态等全链路信息,统一后处理模块与LLM输入接口。
区分两个阶段:原始向量检索结果(向量库直接返回,无重排)、最终标准检索结果(重排+过滤+去重后,输入LLM),本文统一规范最终输出标准检索结果。
2.完整字段定义
检索结果对象(Retrieval Result)全量字段JSON标准化定义,包含请求溯源、检索得分、结果状态、性能统计全维度字段说明:
json
{
\"retrieval_result_fields\": [
{
\"primary_field\": \"retrieval_id\",
\"sub_field\": \"-\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"单次检索请求唯一ID,用于全链路日志追踪\"
},
{
\"primary_field\": \"query_info\",
\"sub_field\": \"query_text\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"用户原始提问文本\"
},
{
\"primary_field\": \"query_info\",
\"sub_field\": \"query_vector\",
\"data_type\": \"float[]\",
\"required\": false,
\"description\": \"用户提问向量,链路排查可选字段\"
},
{
\"primary_field\": \"result_list\",
\"sub_field\": \"chunk_id\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"关联切片ID,双向溯源\"
},
{
\"primary_field\": \"result_list\",
\"sub_field\": \"chunk_text\",
\"data_type\": \"string\",
\"required\": true,
\"description\": \"切片原文,直接用于拼接LLM上下文\"
},
{
\"primary_field\": \"result_list\",
\"sub_field\": \"vector_score\",
\"data_type\": \"number\",
\"required\": true,
\"description\": \"向量余弦相似度分数,区间[0,1],分数越高语义越相似\"
},
{
\"primary_field\": \"result_list\",
\"sub_field\": \"rerank_score\",
\"data_type\": \"number\",
\"required\": false,
\"description\": \"重排模型打分,未开启重排则为空\"
},
{
\"primary_field\": \"result_list\",
\"sub_field\": \"doc_meta\",
\"data_type\": \"object\",
\"required\": true,
\"description\": \"复用切片对象中文档元数据:文档名、页码、标题路径等\"
},
{
\"primary_field\": \"result_list\",
\"sub_field\": \"is_valid\",
\"data_type\": \"boolean\",
\"required\": true,
\"description\": \"当前结果是否有效:false代表被过滤、权限不足、重复\"
},
{
\"primary_field\": \"retrieval_stat\",
\"sub_field\": \"total_recall_num\",
\"data_type\": \"number\",
\"required\": true,
\"description\": \"向量库原始召回总数\"
},
{
\"primary_field\": \"retrieval_stat\",
\"sub_field\": \"final_result_num\",
\"data_type\": \"number\",
\"required\": true,
\"description\": \"过滤重排后最终有效结果数\"
},
{
\"primary_field\": \"retrieval_stat\",
\"sub_field\": \"retrieval_cost_ms\",
\"data_type\": \"number\",
\"required\": true,
\"description\": \"单次检索耗时(毫秒),用于性能监控\"
}
]
}
3.约束规则
•result_list结果默认按照rerank_score降序排序,未开启重排则按照vector_score降序排序;
•is_valid字段统一收口所有过滤逻辑(权限过滤、相似度阈值过滤、重复切片过滤),上层业务无需感知底层过滤规则;
•禁止在检索结果中返回原始向量数组,减少接口传输数据量;
•所有元数据与上游切片对象保持一致,保证溯源信息无偏差。
4.标准JSON示例
json
{
\"tenant_id\": \"tenant_001\",
\"kb_id\": \"kb_finance_report\",
\"create_time\": 1718980100000,
\"retrieval_id\": \"uuid-5a1b-3c2d-7e8f-xxxx\",
\"query_info\": {
\"query_text\": \"2025年一季度营收增长情况\"
},
\"result_list\": [
{
\"chunk_id\": \"uuid-8f2a-4d11-b96c-xxxx\",
\"chunk_text\": \"2025年一季度企业营收同比增长12.3%,其中线上业务贡献65%营收增量,线下门店营收保持平稳\",
\"vector_score\": 0.8921,
\"rerank_score\": 0.9456,
\"doc_meta\": {
\"doc_name\": \"2025一季度营收报告.pdf\",
\"page_no\": [5],
\"title_path\": [\"经营数据\", \"营收分析\"]
},
\"is_valid\": true
}
],
\"retrieval_stat\": {
\"total_recall_num\": 10,
\"final_result_num\": 1,
\"retrieval_cost_ms\": 36
}
}
六、三类数据对象联动关系与全链路映射
1.核心主键映射关系
chunk_id = vector_id = retrieval_result.chunk_id,三类对象通过同一个唯一主键实现全链路闭环溯源:
•检索结果异常 → 通过chunk_id反向查询向量对象,排查向量编码问题;
•向量相似度异常 → 通过vector_id反向查询切片原文,排查切片质量问题;
•文档内容错误 → 通过doc_id批量定位所有关联切片与向量,批量更新。
2.数据存储分层建议
•关系型数据库(MySQL/PostgreSQL):存储完整文档切片对象,保存原文与全量元数据;
•向量数据库:存储向量对象,仅保存向量数值、过滤标签、溯源ID,不存长文本;
•内存/接口层:生成并流转检索结果对象,检索完成后不持久化存储。
七、落地适配说明
1.极简版适配
可删除多租户tenant_id、权限permission、重排分数等可选字段,保留核心主键、文本、向量、分数字段,满足单机简易RAG搭建需求。
2.企业版适配
强制开启所有必选字段,补充extend扩展字段,接入链路追踪、权限管控、增量更新、脏数据自动巡检能力,适配高并发、多租户生产集群。
3.组件替换兼容性
更换切片器、Embedding模型、向量库、重排模型时,无需修改上下游业务代码,仅需修改底层数据生成逻辑,上层数据结构完全保持不变,大幅降低组件替换成本。
八、总结
RAG链路三类数据对象标准化定义,解决了行业内长期存在的数据结构混乱、链路无法溯源、组件无法互通的痛点。通过统一主键、分层存储、字段分级、全链路溯源四大设计原则,兼顾轻量化部署与企业级生产需求。
开发者可直接基于本文档JSON结构进行代码结构体定义(Python Pydantic、Java Bean、Go Struct),实现RAG全链路数据口径统一,提升系统稳定性、可维护性与可扩展性。
点赞数:8
© 2021 - 现在 杭州极深数据有限公司 版权所有 (深数据® DEEPDATA® 极深®) 联系我们 
浙公网安备 33018302001059号  浙ICP备18026513号-1号