
很多公司刚接触大模型的时候,都会经历同一个尴尬场面。
老板在内部演示会上问模型:“我们公司最新的华东区差旅餐饮报销标准是多少?”
模型想都不想,立刻回了一句:“每人每天标准为500元,凭发票实报实销。”
实际上,财务制度里白纸黑字写着上限是 350元。如果员工信了这句话去报销,财务肯定会直接打回。
这就是典型的 大模型幻觉。
通用大模型本质上是一个概率预测引擎,根据上文猜下一个字出现的概率。它在公网海量数据上训练,但压根没读过你公司的内部飞书、钉钉、Confluence 或者 ERP 数据库。你问它业务细节,它为了保证句子通顺,就会开始一本正经地胡说八道。
要解决这个问题,目前业界最成熟且成本最低的路径,就是搭建 RAG(检索增强生成)企业知识库。
简单来说,不要试图让模型把所有公司制度背进脑子里,那叫微调,不仅成本高,而且制度一改就得重新花钱训练。正确的做法是给大模型做一场 开卷考试:用户提问时,系统先去公司的文档库里翻出对应的段落,然后把问题和参考资料一起递给模型,命令它:“只根据这几段文字回答,找不到就说不知道。”
搭建一个真正能落地的企业知识库,需要按顺序走完以下四个步骤。
第一步:文档清洗与文本切分(Chunking)
很多人以为把公司一堆 PDF、Word、Excel 直接扔进系统就行,结果检索出来的内容一团糟。知识库效果不好的原因,八成出在数据准备阶段。
先做数据清洗:去掉文档里的页眉、页脚、无意义的水印和冗余空行。遇到扫描版 PDF,必须先跑 OCR 工具把它转成纯文本。
然后做文本切分。模型单次能处理的上下文有限,而且整篇几万字扔进去会严重稀释注意力。你需要把长文章切成一个个短块(Chunk)。
切分时有几个关键参数:
•切分块大小(Chunk Size):建议设为 500 到 800 个字符。太小会丢失上下文,太大会带入过多无关噪声。
•重叠长度(Chunk Overlap):必须设置 10-15% 的重叠区间(比如 50 到 100 字符)。这样能防止关键句子刚好被切断在两块之间,导致语义断裂。
•表格处理避坑:财务报表和报价单千万不要直接按字符切。必须转成 Markdown 格式或 HTML 结构 存储,保留行与列的关系,否则模型抓取到的数据全是错位的。
第二步:Embedding 向量化与向量数据库选型
切好的文本块,计算机是看不懂中文意思的。你需要用 Embedding 模型把文本转成高维数学向量,存进向量数据库。
市面上的向量数据库很多,不要盲目追求流行,要根据企业已有的技术栈和数据量来挑选:
| 数据库选型 | 适用场景 | 数据规模上限建议 | 部署与运维成本 | 核心特点与避坑提示 |
|---|---|---|---|---|
| Pgvector (PostgreSQL插件) | 业务本身已使用 PG,文档量在百万级以内 | 约 100 万到 300 万向量 | 极低(复用原有 PG 实例即可) | 中小企业首选。无需维护额外组件,支持关系数据与向量混合过滤。 |
| Qdrant | 纯向量检索需求,需要高性能过滤 | 500 万到 5000 万向量 | 中等(单机 Docker 极易启动) | Rust 编写,内存占用低,Payload 标量过滤速度快,适合中型知识库。 |
| Milvus | 超大规模数据量,有专职运维团队的大厂 | 5000 万向量以上 | 高(依赖 etcd、MinIO、Pulsar 等组件) | 分布式架构设计,扩容方便,但组件多,小团队运维负担重。 |
| Chroma | 本地原型验证、算法工程师单机实验 | 10 万向量以内 | 极低(直接 embedded 模式嵌入代码) | 适合本地测试Demo,严禁直接用于生产高并发环境。 |
选型结论很简单:如果你的知识库文档在几十万条以内,优先选择已有的 PostgreSQL 加装 Pgvector 插件,这样最省事,成本几乎为零。
第三步:混合检索(Hybrid Search)与重排(Rerank)
很多团队搭完向量检索后,发现一个致命问题:用户搜“项目代号 X-2024”,向量检索居然找不到,反而找出来一堆关于“2023年某计划”的内容。
因为向量检索看的是语义相似度,它对生僻专业术语、产品型号、专有名词、工号非常不敏感。
要解决这个问题,必须配置 混合检索(Hybrid Search):
1.向量检索(Dense Retrieval) 负责找含义相近的句子;
2.BM25 关键词检索(Sparse Retrieval) 负责精确匹配特定的词汇、型号、人名。
两者各召回前 30 条数据,合并去重后,再经过一道关键工序:Rerank(重排序模型)。
目前开源社区效果较好的重排模型有 BAAI 的 `bge-reranker-large` 等。Embedding 只是粗筛,Rerank 则是精排。Rerank 模型会把用户的问题和候选的 30 个段落逐一做交叉注意力打分,只选出得分最高的 前 3 到 5 个切片 喂给大模型。
加入 Rerank 这一道工序,能把召回内容的精准度直接拉高一个档次,是抑制幻觉最硬核的手段。
第四步:设置严格的提示词(Prompt)约束
把召回的 3 到 5 个段落组装成 Prompt 时,必须给大模型带上“紧箍咒”。
不要给模型太自由的发挥空间,否则它依然可能用自带的预训练知识去填补漏洞。
你可以参考这个提示词结构:
你是企业的内部知识库助手。请严格仅根据提供的【参考文档】回答用户问题。
规则:
1. 如果【参考文档】中包含明确答案,请直接给出事实,用词准确,标明参考出处。
2. 如果【参考文档】中没有提到相关信息,请直接回答:“知识库中暂未收录相关信息,请咨询对应业务部门。”
3. 严禁编造或推测参考文档以外的数据、金额、人名或规则。【参考文档】:
{此处填入 Rerank 筛选出的前3个切片}【用户问题】:
{用户实际提问}
把温度参数(Temperature)调到 0.1 或 0。这样可以让模型保持严谨克制,输出确定性最高的内容。
上线后的避坑建议
系统跑通后,不要急着全员推广,先做好两项保障工作。
第一是 权限隔离。销售人员不该查到研发人员的代码文档,普通员工不该查到高管的薪酬明细。在入库切片的时候,每个 Chunk 都要打上对应的权限标签(Metadata)。用户发起查询时,先校验用户身份,带上权限过滤条件做检索,从源头上防止越权访问。
第二是 知识更新闭环。文档一旦更新,知识库里的旧切片必须同步删除或标记失效。如果知识库里同时存在《2023版报销制度》和《2024版报销制度》,大模型极大概率会混淆两个版本的条款。务必给每条数据加上生效日期,或者在录入新文档时直接将旧文档的向量标记为废弃。
把这几步走扎实,你会发现根本不需要动辄花几十万做模型微调,大模型就能在企业业务场景中给出准确、可核验的回答。
原创文章,作者:七点互动,如若转载,请注明出处:https://ai.qidianhudong.com/aikonw/4200.html