RAG检索服务

一个支持本地和容器化部署的RAG检索微服务,提供健康检查接口和双模式运行(stdio模式和服务模式)。

  • by KeMaSF
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 KeMaSF/RAG_k8s

使用说明

A.当地RAG→ MCP服务器

获取RAG代码(vector.py、Local_RAG.py)。

  • 添加了mcp_server.py,将search_reviews作为mcp工具公开。

  • 为探针添加了/healthz和/ready端点。

  • 双模式:

    • stdio模式 (MCP_STDIO=1,默认值)用于本地MCP客户端,如Claude Desktop。
    • 服务模式 (MCP_STDIO=0)用于Docker/K8s。

Docker/K8s的服务模式(MCP_STDIO=0)。

在本地运行(stdio模式):

conda activate llm
export OLLAMA_HOST=http://localhost:11434
python mcp_server.py

# in another terminal:
curl http://localhost:8080/healthz

B.码头化

  • 写a Dockerfile:
    • 已安装的deps。
    • 已创建非root用户。
    • 制造 /data/chroma 可写。
    • 集 ENV CHROMA_DIR=/data/chroma.
  • 已构建并标记的图像:
docker build -t rag-mcp:local .

在服务模式下运行容器(具有持久性和Ollama连接):

docker卷创建chromadata

# Linux
docker run --rm -p 8080:8080 \
  --add-host=host.docker.internal:host-gateway \
  -e MCP_STDIO=0 \
  -e OLLAMA_HOST=http://host.docker.internal:11434 \
  -v chroma_data:/data/chroma \
  rag-mcp:local

# Mac/Windows (omit --add-host)

测试健康状况:

curl http://localhost:8080/healthz

C.Kubernetes(本地带种类)

  • 已在k8s/下创建命名空间、ConfigMap、部署和服务。
  • 部署在MCP_STDIO=0(服务模式)下运行。
  • 健康探针检查/healthz和/就绪。
# 1. Create cluster
kind create cluster --name rag

# 2. Load local image into kind
kind load docker-image rag-mcp:local --name rag

# 3. Apply manifests
kubectl apply -f k8s/

# 4. Check
kubectl -n rag-dev get pods
kubectl -n rag-dev logs deploy/rag-mcp

# 5. Port-forward and test
kubectl -n rag-dev port-forward svc/rag-mcp 8080:80
curl http://localhost:8080/healthz

此时:✅ 你有一个在Kubernetes上运行的MCP微服务。