基于向量数据库的本地文本权限检索系统。
当前仓库已落地第一阶段可运行实现,优先面向命令行交付,同时保留后续平滑改造成 HTTP 接口供 Web 页面调用的边界设计。
Python + Typer + SQLite + Qdrant + Ollama- 权限过滤在向量检索请求阶段下推到 Qdrant
- 支持用户、角色、角色继承、文档导入、ACL 动态修改、按用户受控检索
- CLI 已覆盖文档中要求的完整命令体系
- 启动 Qdrant:
docker pull docker.1ms.run/qdrant/qdrant:v1.15.5
docker compose up -d qdrant- 设置环境变量:
cp .env.example .env
export SECURE_VEC_OLLAMA_URL=http://192.168.2.238:11434
export SECURE_VEC_EMBED_MODEL=nomic-embed-text-v2-moe:latest- 初始化:
python3 -m secure_vec init- 最小闭环示例:
python3 -m secure_vec role create --name staff --level 10
python3 -m secure_vec role create --name manager --level 30
python3 -m secure_vec role inherit --parent manager --child staff
python3 -m secure_vec user create --username alice
python3 -m secure_vec user grant-role --username alice --role manager
python3 -m secure_vec doc import --doc-id spec-001 --path ./docs/00.md --title "原始需求" --level 20
python3 -m secure_vec doc grant-role --doc-id spec-001 --role manager
python3 -m secure_vec search --username alice --query "权限过滤" --with-acl-hit- 运行测试:
pytest -q启动 HTTP 服务:
export SECURE_VEC_API_KEY=change-me
secure-vec-api一键启动完整服务:
scripts/start_service.sh允许局域网访问:
scripts/start_service.sh --lan该脚本会默认完成以下动作:
- 启动
docker compose中的qdrant - 等待
qdrant就绪 - 导出 HTTP/Web 所需环境变量
- 启动
FastAPI服务,直接可访问/web
如果加上 --lan,服务会绑定到 0.0.0.0,脚本会同时打印本机局域网访问地址。
常用覆盖变量:
SECURE_VEC_OLLAMA_URL=http://<your-ollama>:11434 \
SECURE_VEC_EMBED_MODEL=nomic-embed-text-v2-moe:latest \
SECURE_VEC_API_KEY=change-me \
scripts/start_service.sh默认地址:
- Business Workbench:
http://127.0.0.1:8000/app - Web Console:
http://127.0.0.1:8000/web - Swagger UI:
http://127.0.0.1:8000/swagger - OpenAPI JSON:
http://127.0.0.1:8000/openapi.json
相关文档:
文档入口:
当前建议:
- 第一阶段采用
CLI + Python + Qdrant + SQLite + Ollama Embeddings - 第二阶段在不改核心业务层的前提下增加
FastAPI适配层 - 当前 HTTP 交付已补充 Web 控制台,可直接以页面操作方式完成验收
- 当前同时提供
/app业务工作台,支持超级用户切换视角、在线文本建库、ACL 配置与搜索验证