私有部署的组成

推理、模型网关、检索、工具接入、可观测各管什么,一次知识库问答经过哪几站

私有部署在机房里分成推理、检索、工具三层,前面是一个模型网关,旁边是可观测。下文先列各个部分,再以知识库问答为例走一遍。知识库问答让企业的人用自然语言查自己的资料。它经私有部署的模型网关进入检索与推理,不经核心经营系统的模型网关;模型读得到原文,所以权限在检索阶段过滤。引擎、向量库任一更换,业务代码不改;业务依赖引擎专有字段时,这种换法不成立。

各个部分

私有部署由下面的部分组成。引擎和检索各自可评估、可替换,经营系统只与模型网关和检索服务打交道。

部分管什么对外接口换掉它的条件
推理引擎加载权重,连续批处理并发请求(以 vLLM 为例,continuous batching)不直接对外,经模型网关;指标端点供可观测抓取业务用到的请求字段逐个回归通过
模型网关统一入口:一套公开的 HTTP 请求格式,如对话 /v1/chat/completions、嵌入 /v1/embeddings;承担 TLS 与鉴权,按 token 限流,按任务路由到不同模型,故障时回退到备用模型企业内网地址不换,是契约本身
检索知识库混合检索(向量与关键词)与重排,按文档权限过滤;知识库是被检索的对象,入库经切块、嵌入写进向量库向量库只对检索服务开放评测集得分不降;换嵌入模型要整库重嵌入
工具接入经 MCP(Model Context Protocol)连接在用系统,读与写分开授权,写操作单独开通;知识库问答这条管线里的模型不拿工具,见下文在用系统各自的接口,用户保持原有界面随在用系统变更
可观测显卡与引擎指标,每次调用的追踪与 token 用量;追踪服务部署在机房内,提示词与日志不外送看板,见运维与升级换引擎后重新核对抓取的指标

本页的模型网关是私有部署机房里的统一入口,此前各页称「接口层」,个别配图仍沿用旧称。它与核心经营系统的模型网关不是同一个部件:后者只给模型聚合数与令牌,投影白名单与输出契约见接入模型服务;那些保证不适用于私有部署的模型网关。

模型网关要自己承担鉴权与限流,原因在引擎自带的密钥覆盖有限。vLLM 的安全指南写明,它的访问密钥只覆盖 /v1、/v2 等前缀,/metrics 等端点不在其内,并建议把引擎放在反向代理之后,只开放要用的端点(vLLM 安全指南)。

接口契约

「兼容 OpenAI 接口」通常只是子集。Ollama 的文档写明它只支持 OpenAI API 的一个子集,logprobs、tool_choice、n 在对话接口里都不支持(Ollama 兼容性);vLLM 则在标准字段之外加了 structured_outputs 等扩展参数(vLLM 在线服务)。同一个请求在两个引擎上,能用的字段不同。

契约因此写成业务实际用到的字段清单。换引擎时,逐个字段回归,再跑评测集。核心经营系统的模型网关取同样的做法:接入模型服务的协议只取请求格式最通用的一种,不接工具。清单里出现引擎专有字段的那一天,换引擎就变成改业务代码,要在选型时当作一条代价写进记录。

一次问答的经过

一次问答经过的各站

图里蓝色的权限过滤站在召回之前,没有通过它的片段到不了模型。每一站有自己的失败方式,生成站另有一行出口控制:

站做什么怎样失败设防要求
权限过滤按提问者的身份,限定能检索到的文档范围跨部门泄漏;或过滤后召回变少条件写进检索查询,向量库分区;验收用例见上线前安全核对
混合召回向量相似度与关键词匹配各召回一批,合并只用一路,另一路能找到的片段漏掉两路合并,召回参数随索引版本记录
重排对候选片段按相关度重新排序,取前几条多一站延迟,多一个模型要部署用评测集量收益,再决定是否保留
生成模型读问题与片段,写回答文档里的指令被当作指令不靠提示词设防,见下文
生成的配套:外部内容标记与输出渲染把检索到的片段标为外部内容,与指令分开;渲染回答时不自动加载其中的外部图片与链接注入诱导模型插入指向攻击者地址的图片,带出对话内容;零出站只管服务端,用户网络能出站时仍成立片段与指令分段并标明来源;前端对图片与链接做白名单
引用校验核对回答里的来源是否真实存在编造来源,或引用了没有权限的片段来源必须落在本次召回且已通过权限过滤的集合里

权限过滤

权限要在检索查询里过滤,不能等模型写完再删。片段一旦进了提示词,模型就读到了它,输出里不显示不等于没有影响。OWASP 把这类风险列为 LLM08:访问控制不足或错位,会让人读到不该读的嵌入数据,多租户共用向量库时,上下文还会在用户之间串;它给的缓解办法是权限感知的向量存储,以及对数据集做严格的逻辑与访问分区(OWASP LLM08)。

过滤条件写进检索查询之后,还有一个容易踩的坑,出在近似索引上。pgvector 的文档写明:用近似索引时,过滤发生在索引扫描之后;条件命中 10% 的行时,按默认的 hnsw.ef_search 40,平均只能匹配 4 行。后果不是越权,是应该召回的片段没召回,回答变成「资料里没有」。文档给的办法有几种:过滤值很少时建部分索引,值很多时按值分区;0.8.0 起可以启用迭代索引扫描,让过滤后取到更多行(pgvector)。按部门分区时,查询带上部门条件,只扫对应的分区。

按个人授权到文档级时,分区数会失控,只能回到过滤加迭代扫描,或者在候选集上做精确扫描。选哪一种,取决于权限的粒度,要在选型时测。

混合召回与重排

单路向量检索会漏。Anthropic 的一篇文章报告了一组自测数字:在代码库、小说、论文等数据上,基线的前 20 条检索失败率为 5.7%;用 Contextual Embeddings 降到 3.7%,再加 Contextual BM25 降到 2.9%,再加重排降到 1.9%(Contextual Retrieval)。这是厂商自己的实验,数据不是中文企业资料,只能当作方向:加一路关键词、再加一站重排,通常值得试。

pgvector 的文档给出了做法:向量检索与 PostgreSQL 的全文检索合用,用倒数排名融合(RRF)或交叉编码器合并结果。重排模型可以由 vLLM 以 /rerank 之类的端点提供(vLLM 池化模型)。收益多大,只有企业自己的评测集能回答:问题、标准答案、来源文档三列,再加切片标签,如多跳、应拒答、跨部门。每次改动检索参数,都跑一遍并与上次对比。

生成与提示注入

「只根据上下文回答」写进系统提示,不是控制手段。OWASP 对间接提示注入的定义是:模型接收来自网站或文件等外部来源的输入,而文档里可以混着指令。该页还写到,检索增强与微调都不能完全消除提示注入,也不确定是否存在万无一失的防法(OWASP LLM01)。

所以设防放在模型之外:入库审核、权限过滤、模型无工具、引用校验。入库前审核文档来源,对应 OWASP LLM08 缓解清单里对知识来源的数据校验;LLM01 的缓解清单还要求把不可信内容与指令分开并标明。一份被投毒的文档会影响所有有权检索它的人,入库审核是其中唯一持续起作用的控制。

另有一条出口要堵:OWASP LLM01 的第 2 个场景里,网页中的隐藏指令让模型插入指向攻击者地址的图片,从而带出对话(OWASP LLM01)。回答在界面里渲染时,外部图片与链接要走白名单。

知识库问答与核心经营系统的调用面走不同的入口。它经私有部署的模型网关(TLS 与鉴权)进入检索与推理,不经核心经营系统的模型网关;模型能碰什么 不能碰什么里网关的投影白名单与输出契约保证,不适用于它。那一页写明,让模型读原文的场景要另做威胁模型。知识库问答的控制是:权限过滤、模型无工具、引用校验、入库审核;威胁与证据的完整对照见上线前安全核对。

引用校验

引用校验要核对:回答里的每个来源编号,必须落在本次召回且已通过权限过滤的片段里;回答引用的原句,必须能在该片段里找到。不通过的引用去掉并标记,整条回答没有任何有效来源时拒答。

这一站的边界要说清:它证明「来源是真的」,不证明「回答忠于来源」。回答可能引了一个真实的片段,却写出片段没有的结论。后者靠持续评测:Ragas 的 faithfulness 指标度量回答是否忠于检索到的片段,达线指标与阈值见私有部署概览的验收一节。

入库与换嵌入模型

入库是离线批处理,不在提问时发生:

步骤做什么要记下什么
切块把长文档拆成适合检索的小段切块参数、文档版本与权限标签
嵌入把每块文本变成向量;语义相近的文本,向量也相近嵌入模型名与版本、向量维度
写库向量与原文片段、权限标签一起写入向量库索引版本

提问与入库必须用同一个嵌入模型、同一个版本。「两边向量维度一致」只是必要条件:两个模型即便维度相同,各自的向量空间也不可比,混着用,检索结果没有意义。

因此换嵌入模型的做法是整库重嵌入:新建一套索引与旧索引并存,用评测集对比得分,通过后切换提问路径,旧索引保留到验收结束,以便退回。代价是重嵌入占用的 GPU 时间,以及新旧两份索引并存期间的存储。向量维度还受索引上限约束,pgvector 的 vector 类型索引上限是 2,000 维(pgvector),选嵌入模型时要先对照。

限制与不适用

  • 各站是设计控制与验收要求,不是已发布产品的功能清单。
  • 接口契约只覆盖公共字段。业务依赖 logprobs、结构化输出这类引擎专有能力时,契约会漏,换引擎就要改业务代码。
  • 换嵌入模型不在契约之内,它等于整库重新嵌入。
  • 混合召回与重排多一站延迟,重排还多一个模型的显存。
  • 知识库问答里模型读得到文档原文,与核心经营系统调用面只给聚合数与令牌不同,要另做威胁模型。

其他做法

做法它解决什么为什么不用
把引擎专有字段放进业务契约用上结构化输出等好处模型接入只取最通用的请求格式;专有字段让换引擎变成改业务代码
让模型调用工具去查库少一层检索管线模型接入不接工具;工具、私有数据与读入不可信内容凑在一起,一次注入就能造成泄露,见模型能碰什么 不能碰什么。这条管线取同一条原则:模型不拿工具;区别是这里模型读得到原文,所以靠权限过滤、引用校验和入库审核补上
靠系统提示限定回答范围实现最快边界不靠让模型更听话;文档里的指令与系统提示在模型眼里是同一种文本

验收时可以问的问题

  • 请用最小部门的资料测一次过滤后的召回量,并说明向量库用的是近似索引还是精确扫描。
  • 检索日志里的问题与片段是业务机密,留存期限与日志不可改写之间怎么取舍,请在合同中约定。
  • 请指给我看入库文档的来源由谁审核、审核记录放在哪里。
  • 换嵌入模型时,新旧索引并存多久、由谁确认退回的条件,请在合同中约定。

相关页

这页有帮助吗谢谢,我们会据此改进这一页。

需要帮助?联系我们

想先知道我们怎么想?关于 SZV

联系我们

企业人员规模(人)

试用工作台