F104新增共享内存接纳:问答、分类、后台扫描和分析合计默认4个名额,RSS和可用内存检查可能进一步拒绝;下表16路不再是默认可同时执行的问答数。各阶段原并发配置保留。生产硬隔离须安装systemd unit,见内存保护。
生产API/CLI的问答并发通过环境变量配置;本轮新增两项,本地均为8:
KNOWLEDGE_ANALYSIS_CONCURRENCY=8
RETRIEVAL_CONTENT_CONCURRENCY=8
两项范围1–32、默认8,系统环境变量优先于项目.env,非法值启动失败,重启后生效。直接构造Recommender的测试/开发调用仍可显式传workers;API/CLI均注入环境配置。F170将全文分析改为先准备各候选的原有分块,再由单个请求内证据块池调度,不再额外创建候选协调线程池;真正模型调用仍最多workers路,不会变成8×8调用。卡片短文案阶段复用同一并发配置。不同知识库完整原文回读各自存储结果,按库顺序合并后仍按原候选顺序恢复和校验;同库首段读取完成后才查询剩余分段。只有六库时配置8实际最多6路;某库没有入选候选则不创建读取任务。
在4000字节组块、长字段1000字切分不变的前提下,以既有分块序列化证据字节量估算任务权重,比较原顺序和稳定长块优先顺序的预计最终工作线程负载。只有预计负载至少下降5%才改变开始顺序;单worker、所有块一波可运行、同长或收益不足时保留原顺序。资料相关性、选中数量、分析块数量、模型调用/重试上限、输入/输出预算均不调整,不删独有条件/例外或合并不同来源。各块的系统提示、title/情形/区划、主体事实、evidence_id、path/offset/text及修正反馈保持原协议。
各任务结果仍按原候选和原chunk_index归位后再合并;引用/资格验证和两次局部尝试不变,任一块失败仍禁止该来源进入完整推荐与综合。取消标志保留来源内隔离,已排队块先检查取消状态,在途调用可能继续;新开始顺序可能改变取消时已有的片段,不保证中断时部分诊断集合完全相同,完整性门槛不放宽。
字节量不是模型输出复杂度或真实耗时。长块优先只是启发式,不保证每组请求更快;耗时与输入长度反向时可能变慢。仅本地合成Git原实现对照验证:相同输入/提示和完整输出相同,相关耗时替身的8来源36块样例中位165.189→153.623ms(3次),1/3/12来源没有显著重排收益,保留原顺序。虚拟反例中预计权重改善但真实设定时长5→6,明确不能由此承诺用户11块会从6.653秒减少多少。没有调用真实模型、Redis/检索或部署,实际收益及模型服务容量仍需获准后验证。
新增analysis_prepare跨度(包含原文提取、原有分块、估算和排序),仍嵌套在analysis中;新增数字测量后缀.analysis:analysis_scheduled_chunks(待模型分析块数,不含QA快路径)、analysis_reordered_chunks(相较原顺序换位块数)、analysis_schedule_original_weight/analysis_schedule_selected_weight(预计最后线程负载,单位为累计证据字节权重,不是ms/token,也不含完整提示/标题补入开销)。指标不含来源名、编号、原文或主体数据。对比时继续看analysis墙钟和model_wait.analysis,不可把executor_wait或模型调用累计量当总时间。
executor_wait.analysis在F170前同时累计候选协调池和证据块池等待,F170后只剩证据块池;例如3候选11块由14次变成11次并不代表少分析了3块。跨版本不能把该累计量直接相减当作真实阶段提速;分块数看analysis_scheduled_chunks和候选诊断,实际调用及重试看model_call.analysis,阶段墙钟看analysis。
下表是代码默认值,不代表未核对的部署环境实际值;本轮仅修改上述两项本地配置。
| 环境变量 | 默认 | 作用域 |
|---|---|---|
| API_MAX_CONCURRENT_REQUESTS | 16 | chat接纳上限;公司分类有独立接纳池但复用此数值 |
| API_LLM_CONCURRENCY | 8 | API进程内共享模型名额,覆盖问答、rerank、图片识别、公司分类及后台分析 |
| API_RETRIEVAL_CONCURRENCY | 4 | API进程内同时检索的请求数 |
| RETRIEVAL_QUERY_CONCURRENCY | 4 | 单请求查询并发 |
| RETRIEVAL_BANK_CONCURRENCY | 6 | 单查询跨库向量检索并发 |
| RETRIEVAL_CONTENT_CONCURRENCY | 8 | 单请求跨库完整原文回读并发 |
| RERANK_CONCURRENCY | 4 | 单请求相关性初筛并发 |
| KNOWLEDGE_ANALYSIS_CONCURRENCY | 8 | 单请求全文分析、候选协调和随后卡片短文案并发 |
| SESSION_ANALYSIS_CONCURRENCY | 4 | 后台同时分析的会话数 |
离线知识摘要的SUMMARY_CONCURRENCY已有独立环境配置,不属于在线请求。API进程数仍固定1,这是会话排他安全边界,不将其开放成可随意提高的并发配置。CLI单独运行时不使用API进程的共享模型信号量。
重启后优先比较同类请求的total_ms、analysis、model_wait.analysis、retrieval_call.retrieve、content_read及错误率。content_read现在可能并行,其total_ms是各调用累计,不是阶段墙钟;检索整体耗时看retrieve。先测单请求,再测多请求并观察P95,不能把单请求改善当成总容量验收。