FastGPT(知识库问答系统)接入自建中转站:文本切片与向量模型配置

接入与开发

讲清 FastGPT 接自建中转站时,向量模型与重排怎么配、文本切片怎么切,以及跑不通时按什么顺序排查。

你用 FastGPT 搭知识库,模型那栏填了自建中转的 Base URL 和 Key,结果要么报错、要么能建库但一问就答偏。问题通常不在提示词,而在两处:向量模型走没走通中转,以及文档切片切得对不对。这篇按接入顺序讲清楚每一步配什么、怎么验,以及答不准时先改哪一项。

你用 FastGPT 搭知识库,模型那栏填了自建中转的 Base URL 和 Key,结果要么直接报错,要么库是建起来了但一问就答偏。这大概率不是提示词的问题,而是两处:向量模型有没有真正走通中转,以及文档切片切得对不对。下面按接入顺序讲,每一步配什么、怎么验,以及答不准时先改哪一项。

读这篇前先说清适用范围:这是给已经能跑通中转、准备把知识库接上的人看的。如果你连对话都还没通,先去 /sites 把站选中,再回来配向量。另外,各家中转站开放的端点不一样,能不能调 embeddings 和 rerank,得去站内目录看它自己写的接口说明,不要想当然。

先分清 FastGPT 里的两类模型:对话模型和向量模型

FastGPT 里模型是分槽位配的,别把它们当成一个东西。对话模型负责组织语言、根据召回片段作答;向量模型只负责把文本变成可检索的向量。两者是独立的配置项,完全可以指向不同来源——比如对话走官方,向量走自建中转,或者反过来。

对话模型
读召回片段、生成最终回答的那个,回答风格和准确度主要由它决定
向量模型
把文档和提问都编码成向量做相似度检索,决定「能不能找到」,不决定「答得好不好」
重排模型
对初步召回结果再排一次序,可选组件,不是必装

排查时先定位是哪一类出错:库建不起来(上传文档报错、知识库一直空)基本是向量模型或接口的问题;库建好了但回答乱,通常是检索质量和对话模型那边。这两个方向的处理方式完全不同,混在一起改只会越改越乱。

把自建中转填进向量服务:Base URL、Key 与协议口径

FastGPT 的模型配置走 OpenAI 兼容格式,界面上填的是基础地址,不是完整的接口路径。最常见的错就是多一层或少一层版本段,比如该填到域名的地方把 /v1 也带上了,或者反过来该带版本段却没带。地址错的时候表现往往是 404 或者模型列表拉不出来,而不是明确说 Key 不对。

另一个容易踩的坑:中转站能不能调 chat 接口,和它有没有开放 embeddings、rerank 是两码事。有些站只代理对话,向量端点根本没转发。填之前先去 /sites 找这个站,看它的说明里有没有写支持向量和重排。地址和协议的具体写法差异,去 /base-url 核对当时的口径,别凭记忆拼。

  1. 填基础地址和 Key在模型供应商配置里选 OpenAI 兼容类型,Base URL 填到站方说明的那一层,Key 用中转站发的那个
  2. 拉一次模型列表保存后点测试或手动拉取模型,能列出向量模型名说明连通性没问题;报错就先只查地址和协议
  3. 单独测向量端点用同样的地址和 Key 调一次 embeddings,确认这个站确实开放了向量接口,而不是只代理对话
  4. 确认模型名口径到 /models 对照当前可用的向量与重排模型命名,不要直接抄别处的模型名

这四步做完再回 FastGPT 建知识库。顺序很重要:连通性没过就先别碰切片参数,否则你改了半小时切片,最后发现是地址写错了。

文本切片:分块大小、重叠与分隔符怎么定

切片本质是在「检索命中率」和「上下文占用」之间做取舍。块切太小,一句话被拆成两半,语义散了,检索时两边都不完整;块切太大,召回一整段但真正有用的那句话被淹在中间,模型容易抓不住重点,还白烧 token。

参数调大之后调小之后什么时候该动
分块大小单块信息完整,但噪音多、占上下文命中更精准,但语义易被切断块读起来像半截话就调大,召回后答不到点上就调小
重叠长度防止句子被切断,代价是重复存储省空间,但边界处容易缺上下文文档里长句、跨段论述多时适当加;一般不超过块大小的小比例
分隔符按标题层级切,保留文档结构按空行或句号切,切得更碎规范条款、FAQ、会议纪要各自的层级不同,默认分隔符往往不合适

判断标准很简单:把一个块单独拿出来读,它能不能独立回答一个小问题。能,这个切法就基本可用;读起来前言不搭后语,就说明切错了地方。FAQ 这种一问一答的语料适合按问答对切,条款类适合按条切,会议纪要适合按人和话题切,别全用一套默认。

  • 先按文档类型分组,不同结构用不同分隔符,别指望一套参数通吃
  • 块大小从中等值起步,拿一批真实问题测,命中不对再上下调
  • 重叠别设太大,重复内容对检索没有增益,只会让上下文更挤
  • 每份文档上传后看一眼切出来的块数和块内容,这比看配置项直观得多

先清洗再切片:进料这一步省不掉

扫描件、表格密集的 PDF、双栏排版的文档,直接喂进去切出来的基本是乱序文本。这种料检索再准也救不回来,因为你切的是错误的东西。清洗这步在 FastGPT 外面做,它这层只负责切和存。

最值得做的几件事:去掉页眉页脚和页码,把被换行切断的句子合并回去,删掉目录页和版权页。这些做完再上传,无效块会明显减少。表格优先转成结构化文本或者问答对,整张表当成一个块通常既超长又检索不到——用户问的是表里某个字段,你丢过去一整张表,等于没给。

检索环节:相似度阈值、召回条数与重排的取舍

这三个参数经常被一起乱改。召回条数给少了会漏答,给多了会把无关片段一起塞进上下文,反而干扰模型判断——模型不是筛子,你喂进去的东西它都会看。相似度阈值是过滤噪音的闸门,调太高会大面积查不到,调太低等于没过滤。

重排模型不是必选项。语料条数少、问题类型集中的场景,收益有限,装了也看不出来;语料多、用户提问方式发散的时候,重排把真正相关的排到前面,差别才明显。它是加在召回之后的一道排序,解决的是「找回来一堆,哪个最相关」。

  1. 先关阈值看原始召回把相似度阈值调到最低或关闭,用测试问题看召回结果里到底有没有正确片段
  2. 有正确片段但排得靠后这种情况加召回条数或加重排,不是调阈值
  3. 召回里根本没有正确片段问题多半在切片或语料,回头查分块和清洗,别在检索参数上耗
  4. 逐个参数单独调每次只动一个参数,固定同一批测试问题对比前后结果,一次改三样等于没改

判断「改了有没有用」得有基线:准备一批你已知答案的问题,记录改之前的召回和回答,改完再跑一遍。没有基线的话,凭感觉调参数只是在原地转圈。

接进应用:把知识库挂到对话流程上

配好向量模型不等于应用里就用了知识库。知识库要在应用的流程编排里显式挂上去,指定哪个节点去查它。这是「配了没生效」最常见的原因:模型配置全对,但对话流程里压根没连知识库,回答当然是模型自己编的。

挂上之后还要管提示词。要求回答带引用来源时,提示词里得写清「只依据检索到的内容作答,检索不到就说不知道」,不然模型会拿常识补全,看起来回答了,其实和你的语料无关。这条对准确性要求高的场景尤其重要。

还有一点:同一套语料换个对话模型,回答风格和贴合度都会变。模型换代的时候别只换配置就上线,按 /model-upgrade-migration-checklist 走一遍,用同一批测试问题验证新旧表现,确认没有退化再切。

出问题时的排查顺序:从连通性到内容质量

FastGPT 知识库出错,最忌讳一上来就改参数。正确的顺序是从底层往上走,每层确认没问题再往上一层,这样能少走很多弯路。

顺序查什么通过的表现不通过怎么办
一向量接口本身能否调通能拉到模型列表,embeddings 请求有正常返回查 Base URL、Key、该站是否开放向量端点,去 /sites 看说明
二文档是否成功切块入库上传后能看到切出来的块,块数合理看格式是否需要先清洗,换分隔符重试
三检索能不能命中用一句语料里原话提问,召回结果里有它查切片大小、阈值,排除清洗问题
四模型作答质量回答基于召回内容,问不到时肯说不知道调提示词,或换对话模型对比

两个快速定位的经验:只有部分文档出问题,多半是那份文档的格式问题,不是全局配置;全部文档都答偏,才回头查模型和参数。另外记录每份文档切出来的块数,块数为零或明显偏少,说明在切分那步就失败了,后面检索当然什么都找不到。

什么情况下这套配置不适用

不是所有场景都值得搭知识库。语料只有几十页、问题类型又固定的情况,直接把内容整理好塞进上下文可能更省事,省掉建库、切片、调检索这一整套。搭检索增强是为了应对语料规模大或者问题发散,规模没到那个程度,它就是额外维护成本。

还有两类要提前想清楚。需要严格权限隔离、每条问答可审计的场景,自建中转的日志和可见性得另外评估,能不能跑通不代表合规上过得去,具体看站内 /sites 里各站的说明。对准确性要求高到必须人工复核的业务,检索增强只是降低出错概率,不能替代复核环节——它让模型少编,但不会保证每句都对。

  • 语料小、问题固定:考虑直接塞上下文,别硬上知识库
  • 要严格权限与审计:先评估中转的日志能力,别只看连通性
  • 必须人工复核的业务:检索增强是降错,不是免责
  • 语料全是扫描件且无法清洗:先解决 OCR,再谈切片和检索
下一步向量模型选哪个、哪家中转站开放了嵌入和重排端点,这些数字和可用性会变,别拿旧信息做决定。到站内中转站目录按当时的接口说明挑,再回 FastGPT 配。

常见问题

知识库建好了,但问什么都答不准,第一步该查什么?

先用一句原文里明确写过的话去检索,看召回的块对不对。召回不对就是切片或向量模型的问题,召回对了但答偏才是对话模型和提示词的问题。跳过这一步直接调提示词,通常白忙。

向量模型换了要重建知识库吗?

要。换向量模型等于换了一套坐标,原来存的向量和新模型的维度、语义空间都对不上,检索会整体失效。所以向量模型要在灌数据前定好,之后换模型就整库重跑一遍。

自建中转的向量接口调不通,一般卡在哪?

多数是地址层级写错、该站没有开放 embeddings 或 rerank 端点、以及 Key 权限不含这类接口。先拿接口工具单独打一次,确认能返回向量,再回 FastGPT 里填。

切片大小有没有通用推荐值?

没有。判断标准是块单独拿出来能不能独立回答一个小问题。条款类文档适合小块,叙述类适合大一些。建议准备十来个真实问题,调一次参数测一轮召回,用结果说话。

重排模型是不是必须配?

不是。语料规模小、提问方式和语料表述接近时,加了收益有限还多一层延迟和费用。语料多、问法发散、召回头几条经常不相关时,重排的差别才明显。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。