Files
law-kb/app/config.py
T
freedak 641e33b834 feat: QYLAW 法律法规知识库
- 语义检索(FAISS + embedding)+ 精确查找(法规名+条号)
- RAG 问答(SSE 流式,支持 thinking 折叠显示)
- 法规浏览(原文阅读)
- 历史记录(检索+对话持久化到 SQLite)
- 设置页(系统提示词/模板/LLM 参数可配置)
- 检索质量评估脚本

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-07 14:55:25 +08:00

75 lines
1.9 KiB
Python

"""配置模块 — 路径、端口、外部服务地址"""
import os
from pathlib import Path
# ===== 路径配置 =====
# 法规原文目录(容器内挂载点,只读)
LAW_PACK_DIR = Path(os.getenv("LAW_PACK_DIR", "/data/law-pack-2026-07-01-markdown"))
# 索引数据目录(容器内挂载点,读写)
LAW_KB_DATA_DIR = Path(os.getenv("LAW_KB_DATA_DIR", "/data/law-kb-data"))
# FAISS 索引文件路径
FAISS_INDEX_PATH = LAW_KB_DATA_DIR / "faiss" / "index.faiss"
# SQLite metadata 数据库路径
SQLITE_PATH = LAW_KB_DATA_DIR / "metadata.db"
# 构建日志目录
LOGS_DIR = LAW_KB_DATA_DIR / "logs"
# 地方性法规区域映射文件
REGION_MAPPING_PATH = LAW_PACK_DIR / "地方性法规区域映射.json"
# 法规类别与目录名映射
CATEGORY_DIRS = {
"法律": "法律",
"行政法规": "行政法规",
"监察法规": "监察法规",
"司法解释": "司法解释",
"地方性法规": "地方性法规",
}
# ===== 外部服务地址 =====
# 容器内通过 localhost 访问(--network host 模式)
EMBEDDING_URL = os.getenv("EMBEDDING_URL", "http://localhost:8003/v1")
LLM_URL = os.getenv("LLM_URL", "http://localhost:7000/v1")
# embedding 模型名(与 114 上 vLLM served-model-name 一致)
EMBEDDING_MODEL = os.getenv("EMBEDDING_MODEL", "qwen3-embedding-0.6b")
# LLM 模型名
LLM_MODEL = os.getenv("LLM_MODEL", "qwen3.5-35b")
# ===== 索引参数 =====
# embedding 批量大小
EMBEDDING_BATCH_SIZE = int(os.getenv("EMBEDDING_BATCH_SIZE", "32"))
# FAISS HNSW 参数
HNSW_M = 32
HNSW_EF_CONSTRUCTION = 200
HNSW_EF_SEARCH = 64
# 检索默认 Top-K
DEFAULT_TOP_K = 20
# RAG 检索 Top-K
RAG_TOP_K = 10
# RAG 相似度阈值(低于此值不调用 LLM)
RAG_SIMILARITY_THRESHOLD = 0.3
# ===== API 参数 =====
# 查询最大长度
MAX_QUERY_LENGTH = 1000
# 分页默认值
DEFAULT_PAGE_SIZE = 20
MAX_PAGE_SIZE = 100
# 浏览页分页
BROWSE_PAGE_SIZE = 50
# ===== 服务端口 =====
APP_PORT = int(os.getenv("APP_PORT", "8090"))