操作 · 法律文库向量检索与 AI 对接
操作 · 法律文库向量检索与 AI 对接
入口:法律文库/lawlib/· AI 对话/ai/· 本说明ops-law-rag-guide
一句话结论
- 切块/向量没有出现在「数据页面」列表里——那是企业开放数据等业务页;法律切块存 MySQL,向量存独立向量库。
- 写起诉状等文书时:在 AI 页打开 法律文库·开,系统会先检索向量库,再把命中条文喂给大模型。
数据分别存哪里
| 内容 | 位置 | 说明 |
|---|---|---|
| 法规/案例原文与元数据 | MySQL by_kb_doc / by_kb_doc_file | 法律文库前台浏览、下载、目录 |
| 切块正文 | MySQL by_kb_chunk | 入库前切段;供回填与对账,不单独做「数据页」 |
| 向量 | Qdrant 集合 legal_statute | HTTP http://127.0.0.1:6333;磁盘 D:\AI\legal_qdrant |
| Embedding | Ollama bge-m3(1024 维) | http://127.0.0.1:11434 |
| RAG 工程(可选 API) | D:\AI\legal_rag | FastAPI 默认 :8210;PHP 也可直连 Ollama+Qdrant |
前台怎么用(写起诉状示例)
- 打开 AI 对话,顶栏选 斑雁(本机)或可用的 API 模型。
- 确认工具栏 法律文库·开(设置里也有「法律文库检索」复选框,默认勾选)。
- 输入例如:
帮我写一份民间借贷纠纷民事起诉状,标的额 8 万元,被告逾期未还。 - 状态栏会显示「正在检索法律文库向量…」,命中后显示「已引用法律文库×N」,再流式生成。
- 回答应尽量引用命中法条;若未命中会提示知识库不足,勿把模型臆造当正式法律意见。
可与「联网」同时开:先文库向量,再联网补充;文书起草优先开法律文库。
运维:保证检索可用
1. 启动向量库
:: 保持常开
D:\AI\legal_rag\scripts\start_qdrant.bat
:: 或直接运行 D:\AI\qdrant\qdrant.exe(数据目录 D:\AI\legal_qdrant)
自检:浏览器或命令行访问 http://127.0.0.1:6333/collections/legal_statute,应看到 points_count > 0。
2. 启动 Embedding(Ollama)
ollama serve
ollama pull bge-m3
3.(可选)启动 RAG HTTP API
D:\AI\legal_rag\scripts\start_rag_api.bat
:: GET http://127.0.0.1:8210/health
:: POST /retrieve {"query":"起诉状格式"}
PHP 服务 LawRagService:优先调 :8210/retrieve;不可用时自动改走 Ollama 向量化 + Qdrant 搜索。
4. 把 MySQL 切块灌进向量库
D:\Program Files\Python312\python.exe E:\wwwroot\zh\dashuju\tools\ingest_kb_loop.py 800 40
循环从 by_kb_chunk 取未入向量的片段写入 Qdrant。入库进度看 Qdrant points_count 与库内切块数对比。
5. 命令行试问(不经网站)
cd /d D:\AI\legal_rag
python -m ingest.ask_cli 故意杀人怎么判
python -m ingest.search_cli 加班工资怎么算
与「数据页面」的关系
- 企业/门店等「数据」页:展示结构化业务统计,不含法律向量点。
- 法律文库页:浏览原文、目录、下载;检索问答走 AI + 向量库。
- 切块表用于管线对账,一般不对访客做「切块浏览器」。
关键代码与配置
| 项 | 路径 |
|---|---|
| PHP 检索服务 | Banyan/Lib/Service/LawRagService.class.php |
| 流式对话注入 | ai_sse.php(参数 use_law_rag=1) |
| 非流式注入 | AiChatService::prepareRequest |
| 前台开关 | themes/.../ai/index.html → 法律文库按钮 |
| RAG 配置 | D:\AI\legal_rag\configs\settings.yaml |
常见问题
| 现象 | 处理 |
|---|---|
| 一直提示法律文库检索失败 | 查 Qdrant:6333、Ollama:11434、模型 bge-m3 是否可用 |
| 命中很少 / 分数低 | 继续跑 ingest;调低 min_score(默认约 0.45) |
| 回答不引法条 | 确认按钮为「法律文库·开」;换更贴切的提问关键词 |
| 与联网冲突 | 文书场景建议只开法律文库;两者都开时文库优先注入 |