6.4 KiB
LPMM 关键参数调节指南(进阶版)
本文是对
config/bot_config.toml中[lpmm_knowledge]段的补充说明。
如果你只想使用默认配置,可以不改这些参数,脚本仍然可以正常工作。重要提醒:无论是修改
[lpmm_knowledge]段的参数,还是通过脚本导入 / 删除 LPMM 知识库数据,主程序都需要重启(或在内部调用一次lpmm_start_up())后,新的参数和知识才会真正生效到聊天侧。
所有与 LPMM 相关的参数,都集中在:
[lpmm_knowledge] # lpmm知识库配置
enable = true
lpmm_mode = "agent"
...
下面按功能将常用参数分为三组介绍。
一、检索相关参数(影响答案质量与风格)
qa_relation_search_top_k = 10 # 关系检索TopK
qa_relation_threshold = 0.5 # 关系阈值,相似度高于该值才认为“命中关系”
qa_paragraph_search_top_k = 1000 # 段落检索TopK,越小可能影响召回
qa_paragraph_node_weight = 0.05 # 段落节点权重,在图检索&PPR中的权重
qa_ent_filter_top_k = 10 # 实体过滤TopK
qa_ppr_damping = 0.8 # PPR阻尼系数
qa_res_top_k = 3 # 最终提供给问答模型的段落数
-
qa_relation_search_top_k
控制“最多考虑多少条关系向量候选”。- 数值大:召回更全面,但略慢;
- 数值小:更快,可能遗漏部分隐含关系。
-
qa_relation_threshold
关系相似度的阈值:- 数值高:只信任非常相关的关系,系统更可能退化为纯段落向量检索;
- 数值低:图结构影响更大,适合实体关系较丰富的场景。
-
qa_paragraph_search_top_k
控制“最多考虑多少段落候选”。- 太小:可能召回不全,导致答案缺失;
- 太大:略微增加计算量,一般 1000 为安全默认。
-
qa_paragraph_node_weight
文段节点在图检索中的权重:- 数值大:更依赖段落向量相似度(传统向量检索);
- 数值小:更依赖图结构和实体网络。
-
qa_ppr_damping
Personalized PageRank 的阻尼系数:- 通常保持在 0.8 左右即可;
- 越接近 1:偏向长路径探索,结果更发散;
- 略低:更集中在与问题直接相关的节点附近。
-
qa_res_top_k
LPMM 最终会把相关度最高的前qa_res_top_k条段落组合成“知识上下文”给问答模型。- 太多:增加模型负担、阅读更多文字;
- 太少:信息不够充分,一般 3–5 比较平衡。
调参建议:
- 优先在
qa_relation_threshold、qa_paragraph_node_weight上做小幅调整;- 每次调整后,用
scripts/test_lpmm_retrieval.py跑一遍固定问题,感受回答变化。
二、性能与硬件相关参数
embedding_dimension = 1024 # 嵌入向量维度,应与模型输出维度一致
max_embedding_workers = 12 # 嵌入/抽取并发线程数
embedding_chunk_size = 16 # 每批嵌入的条数
info_extraction_workers = 3 # 实体抽取同时执行线程数
enable_ppr = true # 是否启用PPR,低配机器可关闭
-
embedding_dimension
必须与所选嵌入模型的输出维度一致(比如 768、1024 等)。不要随意修改,除非你知道你在做什么!!! -
max_embedding_workers
决定导入/抽取阶段的并行线程数:- 机器配置好:可以适当调大,加快导入速度;
- 机器配置弱:建议调低(如 2 或 4),避免 CPU 长时间 100%。
-
embedding_chunk_size
每批发送给嵌入 API 的段落数量:- 数值大:请求次数少,但单次请求更“重”;
- 数值小:请求次数多,但对网络和 API 的单次压力小。
-
info_extraction_workers
scripts/info_extraction.py中实体抽取的并行线程数:- 使用 Pro/贵价模型时建议不要太大,避免并行费用过高;
- 一般 2–4 就能取得较好平衡。
-
enable_ppr是否启用个性化 PageRank(PPR)图检索:true:检索会结合向量+知识图,效果更好,但略慢;false:只用向量检索,牺牲一定效果,性能更稳定。
调参建议:
- 若导入/检索阶段机器明显“顶不住”(>=1MB的大文本,且分配配置<4C),优先调低:
max_embedding_workersembedding_chunk_sizeinfo_extraction_workers- 或暂时将
enable_ppr = false(除非真的出现问题,否则不建议禁用此项,大幅影响检索效果)- 调整后重新执行导入或检索,观察日志与系统资源占用。
小提示:每次大改参数或批量删除知识后,建议用
scripts/test_lpmm_retrieval.py看回答风格是否如预期;- 如需确认当前磁盘数据能否正常初始化,可执行
scripts/refresh_lpmm_knowledge.py做一次快速自检。
三、开启/关闭 LPMM 与模式说明
enable = true # 是否开启lpmm知识库
lpmm_mode = "agent" # 可选 classic / agent
-
enabletrue:LPMM 知识库启用,检索和问答会使用知识库;false:LPMM 完全关闭,脚本仍可导入/删除数据,但对聊天问答不生效。
-
lpmm_modeclassic:传统模式,仅使用 LPMM 知识库本身;agent:与新的记忆系统联动,用于更复杂的记忆+知识混合场景。
修改
enable或lpmm_mode后,需要重启主程序,让配置生效。
四、推荐的调参流程
-
保持默认配置,先跑一轮完整流程
- 导入 →
inspect_lpmm_global.py→test_lpmm_retrieval.py; - 记录当前“答案风格”和“响应速度”。
- 导入 →
-
每次只调整一到两个参数
- 例如先调
qa_relation_threshold、qa_paragraph_node_weight; - 或在性能不佳时调整
max_embedding_workers、enable_ppr。
- 例如先调
-
调整后重复同一组测试问题
- 使用
scripts/test_lpmm_retrieval.py; - 对比不同配置下的答案,选择更符合需求的组合。
- 使用
-
出现“怎么调都不对”时
- 将
[lpmm_knowledge]段恢复为仓库中的默认配置; - 重启主程序,即可回到“出厂设置”。
- 将
通过本指南中的参数调节,你可以在“检索质量”“响应速度”“系统资源占用”之间找到适合自己麦麦和机器的平衡点!