这个主要是问有没有处理大规模数据的流程。当然也是在问RAG的完整流程,不过我们尽量要说的详细点。可以这么回答:

第一步:数据清洗和预处理

首先是数据接入和格式的统一

数据可能是文档(PDF/Word)、表格(Excel),网页(Html)、API接口工具等,需要我们用工具(PyPDF2、BeautifulSoup)提取纯文本。其中还有格式标准化:统一编码(UTF-8)、去除乱码、转换大小写(建议是统一小写)

然后开始清晰降噪,过滤无效信息。去除重复内容(文档中的页眉页脚、重复发言),过滤噪声符号(标点、特殊符号、markdown格式),保留核心文本。

第二步:智能切片(也就是分块)

要根据段落、章节标题、标点切分(同时可以加重叠窗口),这样避免了切断上下文。还要适当的控制长度,建议就是300-500字。具体操作可以用 LIamaIndex 的 RecursiveCharacterTextSplitter (优先按标题、段落切分,再按字符数截断)、 Hugging Face 的 TokenTextSplitter (按照token数切分)

第三步:批量向量化 和 元数据标注

一万的长文档逐篇跑会很慢,会很消耗资源。必须多线程和批处理提速。

同时用规则或LLM提取结构化信息(如文档中的”时间“ ”地点“ ”关键词标签“ 等元数据),作为检索的过滤条件。

第四步:入库建立索引

向量和原文一起存放,建立索引就保证海量数据下检索速度不崩,同时还支持混合检索。

第五步:检索策略优化

采用混合检索(向量检索 + 关键词检索)+ 重排序 (或者Rerank)把不相关的内容过滤掉提高精确度。

注意:这两个知识点也很重要,可能会单独拿出来问。

第六步:长期运维迭代

搭建自动化,增量更新。每天更新新文档,清理过期内容。同时监控召回率和准确率。效果下滑可以考虑调整切片策略或者换 Embedding 模型。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐