自述文件
此存储库包含Medium文章中使用的代码\ “利用RAG和MCP的力量:本地AI如何管理您的整个IT基础设施”:\ https://medium.com/@giulio.librand/auggles-the power of rag and mcp-how-on-premise-ai-manager-your轮胎it基础设施-5d204649aeee
概述
该堆栈部署了一个具有RAG(检索增强生成)和MCP功能的本地LLM平台。它包括:
- 任何事情LLM:用于多用户聊天的Web UI
- 奥利玛(3个复制品):LLM推理(此设置中仅限CPU)
- Nginx路由器:跨Ollama副本的负载平衡
- Qdrant:用于存储嵌入的矢量数据库
- RAG英格斯托:从Redmine和Wiki.js提取数据、嵌入数据并将其推送到Qdrant的Python脚本
- Nginx代理管理器(NPM):简单的反向代理和TLS终止
目录结构
.
├─ docker-compose.yml
├─ .env
├─ router/
│ └─ nginx.conf
├─ npm/
│ ├─ data/ (created by NPM)
│ └─ letsencrypt/ (created by NPM)
└─ rag-ingestor/
├─ requirements.txt
├─ run_cron.sh
├─ rag_common.py
├─ ingest_redmine.py
└─ ingest_wikijs.py环境变量
这 .env 文件定义配置。例子:
TZ=Europe/Rome
ALLM_JWT_SECRET=replace_with_long_random_string
# Qdrant
QDRANT_API_KEY=
# Redmine
REDMINE_URL=https://redmine.local
REDMINE_TOKEN=xxxxxxxx
REDMINE_PROJECTS=infra,platform
REDMINE_LOOKBACK_DAYS=14
REDMINE_COLLECTION=redmine
# Wiki.js
WIKIJS_URL=https://wiki.local
WIKIJS_TOKEN=yyyyyyyy
WIKIJS_SPACES=*
WIKIJS_COLLECTION=wikijs
# Embeddings
EMBEDDING_MODEL=intfloat/e5-large-v2
# RAG Ingestor
STATE_DIR=/app/state
UPSERT_BATCH=64
HTTP_TIMEOUT=40
DEFAULT_SCHEDULE=*/30 * * * *备注
ALLM_JWT_SECRET:必填。生成一个长随机字符串。REDMINE_TOKEN:Redmine的API密钥。WIKIJS_TOKEN:Wiki.js中的API令牌。REDMINE_PROJECTS:以逗号分隔的要索引的项目列表。*_COLLECTION:Qdrant中的集合名称,可以更改。QDRANT_API_KEY:除非在Qdrant中启用API密钥保护,否则保留为空。
首次运行
- 创建
.env具有适当的值。 - 启动堆栈:
docker compose up -d- 等待容器装满(
docker ps).
Ollama的拉模型
内部 ollama1 集装箱、拉式模型:
docker exec -it ollama1 bash -lc "ollama pull llama3.1:8b-instruct-q4_K_M"
docker exec -it ollama1 bash -lc "ollama pull qwen2.5:7b-instruct-q4_K_M"复制品 ollama2 和 ollama3 首次使用时将下载模型。
使用系统
- 通过您配置的域或IP路径访问AnythingLLM。
- 登录并创建工作区。
- 确保矢量数据库设置为Qdrant(
http://qdrant:6333Docker网络内部)。 - RAG Ingestor将定期运行(默认情况下每30分钟运行一次,或根据
# SCHEDULE=脚本中的指令),并用Redmine和Wiki.js内容填充Qdrant。
验证
检查Qdrant集合:
curl http://:6333/collections检查进气管日志:
docker logs -f rag-ingestor检查AnythingLLM API:
curl http://:3001/ --head检查Ollama路由器:
curl http://:11434/api/tags数据持久层
./npm/data和./npm/letsencrypt:Nginx代理管理器配置和证书./ollama*:Olama模型和缓存./qdrant_storage:Qdrant数据库./anythingllm_data:任何LLM工作空间存储./rag-ingestor/state:ETL作业的增量状态
安全
- 更改所有默认凭据(NPM、AnythingLLM)。
- 保护NPM仪表板(
:81)使用防火墙或VPN。 - 仅暴露VM的端口80/443/81。
- 如果可能的话,使用公司CA的内部DNS名称和证书。
