ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

LightRAG 怎么在 Apple Silicon Mac 上用 Apple container 运行 Postgres、Neo4j、Milvus 与 API 服务

LightRAG 怎么在 Apple Silicon Mac 上用 Apple container 运行 Postgres、Neo4j、Milvus 与 API 服务 LightRAG 怎么在 Apple Silicon Mac 上用 Apple container 运行 Postgres、Neo4j、Milvus 与 API 服务【免费下载链接】LightRAG[EMNLP2025] LightRAG: Simple and Fast Retrieval-Augmented Generation项目地址: https://gitcode.com/GitHub_Trending/li/LightRAG在 Apple Silicon Mac 上想跑一套和 Docker Compose 类似的 LightRAG 生产级存储栈——PostgreSQL、Neo4j、Milvus含 etcd 与 MinIO 两个 sidecar再加上 LightRAG API 服务但不想装 Docker Desktop——Apple 官方原生的containerCLI 是可行路径。仓库提供了scripts/setup/apple-container.sh它在这台机器上一次性拉起全部容器并以 CPU 模式运行LLM 与 embedding 走普通出站 HTTPS 调用例如 OpenAI API栈里没有 GPU、没有 vLLM。这套方案要求macOS 26 (Tahoe) 或更新版本的 Apple Silicon 机器容器间网络与container network命令在 macOS 26 之前不存在脚本在旧系统上会直接拒绝运行。本文按仓库文档 docs/AppleContainerSetup.md 的操作顺序展开。准备条件从仓库根目录开始下面所有命令都在该目录下执行git clone https://github.com/HKUDS/LightRAG.git cd LightRAG逐项确认以下前提安装并启动containerCLI。从 Applecontainer的签名发行版安装然后启动一次系统提示时接受默认 kernel 安装container system startBash 4 或更新。macOS 自带 Bash 3.2不满足脚本要求脚本开头会检查BASH_VERSINFO并直接报错退出。用 Homebrew 装一个现代 bash 并显式用它执行脚本brew install bash bash scripts/setup/apple-container.sh up准备好.env文件写入 LLM/embedding 供应商与 API key。没有现成的就从模板复制cp env.example .env # 设置 LLM_BINDING / LLM_MODEL / LLM_BINDING_API_KEY 和 EMBEDDING_* 各键env.example 中默认的示例值是LLM_BINDINGopenai、LLM_MODELgpt-5.4-mini、LLM_BINDING_API_KEYyour_api_key以及EMBEDDING_BINDINGopenai、EMBEDDING_MODELtext-embedding-3-large、EMBEDDING_DIM3072。这里只需改 LLM 和 embedding 两组配置例如在LLM_BINDING_API_KEY和EMBEDDING_BINDING_API_KEY两处都填同一个 OpenAI key存储后端相关变量保持原样——脚本会覆盖它们指向容器里的 Postgres / Neo4j / Milvus。不要从env.docker-compose-full起步那个文件是为 GPU Docker 栈预配置的。也可以跑make env-base交互式生成.env。全程不需要sudo。启动整套存储栈最短主路径就是一条命令# 启动整套栈数据库 LightRAG server bash scripts/setup/apple-container.sh up仓库还给了等价且会自动解析 bash 4 解释器的make目标见 Makefilemake apple-up、make apple-down、make apple-status、make apple-logs SVClightrag、make apple-restart SVCservice、make apple-pull。脚本参数通过SETUP_OPTS传递例如make apple-up SETUP_OPTS--no-lightrag或make apple-down SETUP_OPTS--purge。up会依次完成按依赖顺序创建网络与各容器、等待健康检查脚本用PORT_HEX的/proc/net/tcp探测代替 Compose 的 healthcheck、通过container inspect发现每个服务在共享网络lightrag上分配到的 IP 并据此连线Applecontainer1.0.0 不支持容器间服务名 DNS最后为容器化 LightRAG server 生成.apple-container.env。up的输出里会打印出各服务地址其中包含 Neo4j Browser:7474和 MinIO console:9001的容器 IP 地址——host 可以直接访问容器子网。之后要找回某个 IP重跑一次幂等的up或container inspect service即可。如果只想起数据库、LightRAG server 由自己在 host 上运行用可选分支bash scripts/setup/apple-container.sh up --no-lightrag确认服务真的起来了栈起来后的检查方式# 查看运行状态 bash scripts/setup/apple-container.sh status # 跟踪某个服务的日志 bash scripts/setup/apple-container.sh logs lightrag --follow浏览器访问两个本地入口LightRAG WebUIhttp://127.0.0.1:9621/webuiLightRAG 健康检查http://127.0.0.1:9621/health整套栈里只有 LightRAG server 发布 host 端口127.0.0.1:9621Postgres:5432、Neo4j:7687、Milvus:19530及 etcd/MinIO 都不发布到 host所以不会和 host 上已占用的5432冲突。容器名统一带lightrag-前缀如lightrag-postgres脚本不会碰到或复用其他项目的同名容器。栈的结构如下文档示意host (macOS 26, Apple Silicon) └─ 127.0.0.1:9621 ──▶ [lightrag] ──┐ (--network lightrag) ├─▶ postgres :5432 (volume lightrag_pg) ├─▶ neo4j :7687 (volume lightrag_neo4j) └─▶ milvus :19530 (volume lightrag_milvus) ├─▶ milvus-etcd :2379 (volume lightrag_etcd) └─▶ milvus-minio :9000 (volume lightrag_minio) [lightrag] ──── outbound HTTPS ────▶ api.openai.com栈内各服务用的镜像与配置来源各服务镜像均验证发布了linux/arm64manifest服务镜像postgrespgvector/pgvector:pg18neo4jneo4j:5-communitymilvusmilvusdb/milvus:v2.6.11standaloneCPUmilvus-etcdquay.io/coreos/etcd:v3.5.25milvus-miniominio/minio:RELEASE.2025-09-07T16-13-09Zlightragghcr.io/hkuds/lightrag:latest两处相对docker-compose-full.yml/ 模板的刻意偏差理解了就不会怀疑是漏配Postgres用pgvector/pgvector:pg18而不是模板里的gzdaniel/postgres-for-rag:pg18-age-pgvector。两者都发布 arm64 manifest这不是架构约束——模板镜像附加的 Apache AGE 图扩展在这里用不上图存储是 Neo4j、向量存储是 MilvusPostgres 只承担PGKVStoragePGDocStatusStorage。Milvus用 CPU 标签milvusdb/milvus:v2.6.11不用…-gpu标签后者是 amd64 CUDA跑不了 Apple Silicon。.env本身只读不改脚本复制它生成 git-ignored 的.apple-container.env权限600只覆盖存储选择与连接端点LIGHTRAG_KV_STORAGEPGKVStorage LIGHTRAG_DOC_STATUS_STORAGEPGDocStatusStorage LIGHTRAG_GRAPH_STORAGENeo4JStorage LIGHTRAG_VECTOR_STORAGEMilvusVectorDBStorage POSTGRES_HOSTpostgres 容器 IP NEO4J_URIneo4j://neo4j 容器 IP:7687 MILVUS_URIhttp://milvus 容器 IP:19530 MILVUS_DB_NAMElightrag其中三个...是脚本在up时按实际发现的容器 IP 填入的不需要你手工编辑。LLM/embedding 配置LLM_BINDING、EMBEDDING_BINDING、API key、模型名、EMBEDDING_DIM等原样继承务必在入库文档或查询之前确认.env里是真实 key。数据库凭据的优先级是shell 变量 →.env中的值 → 开发默认值常改项如下均可选变量默认值用途POSTGRES_USER/POSTGRES_PASSWORD/POSTGRES_DBrag/rag/ragPostgres 凭据NEO4J_USERNAME/NEO4J_PASSWORDneo4j/lightragdevNeo4j 认证密码 ≥ 8 字符MINIO_ACCESS_KEY_ID/MINIO_SECRET_ACCESS_KEYminioadmin/minioadminMinIO / Milvus 对象存储MILVUS_DB_NAMElightragMilvus 数据库名MilvusVectorDBStorage 必需LIGHTRAG_AC_MEM_HEAVY6GMilvus 与 Neo4j 所在 VM 的内存LIGHTRAG_AC_MEM_LIGHT2GPostgres 与 LightRAG 所在 VM 的内存信任边界注意这是本地单人开发栈。数据库容器虽不发布 host 端口但在 vmnet IP 上以默认开发凭据可达——不要部署在共享/多用户机器上若他人能路由到容器子网覆盖POSTGRES_PASSWORD/NEO4J_PASSWORD/MINIO_SECRET_ACCESS_KEY。数据持久化与常见故障所有数据都在命名卷里lightrag_pg、lightrag_neo4j、lightrag_milvus、lightrag_etcd、lightrag_minio、lightrag_lightrag。容器名与卷名都从LIGHTRAG_AC_PREFIX派生命名空间所以用不同前缀再起的第二套栈有自己的容器和自己的存储。down只删容器、保留卷之后的up会恢复数据只有down --purge会删除卷连同.apple-container.env。排查时按现象对号bind(...): Address already in use——host 上已有进程占用9621例如 host 上的lightrag-server停掉后重试。数据库端口不发布host 上5432的 Postgres 不受影响。单独restart某个数据库后其 IP 变了——栈在up时按 IP 连线IP 变化会导致依赖方失连down后再up重新连线。Milvus 或 Neo4j 被杀 / 很慢——两者吃内存调高LIGHTRAG_AC_MEM_HEAVY例如8G。/health是绿的但入库或查询失败——栈本身没问题是 LLM/embedding 调用失败确认LLM_BINDING_API_KEY和EMBEDDING_BINDING_API_KEY两处都填了真实 key供应商有配额/余额OpenAI 欠费时返回429 insufficient_quota。logs lightrag能看到具体 HTTP 错误。Rerank is enabled but no rerank model is configured——这套 CPU 栈不带本地 reranker检索仍然可用想消掉这个提示要么配置托管 rerankerRERANK_BINDINGRERANK_MODEL key要么在查询参数里传enable_rerankfalse。想看某个服务内部bash scripts/setup/apple-container.sh logs service或container exec service sh。停止与清理# 停止并删除容器保留数据 bash scripts/setup/apple-container.sh down # 停止、删除容器并删掉全部存储数据 bash scripts/setup/apple-container.sh down --purgedown --purge会删除上面全部命名卷数据不可恢复执行前确认这确实是想要的终态。网络可选删除container network delete lightrag至此Postgres、Neo4j、Milvus 与 LightRAG API 服务已在 Applecontainer上完整跑通http://127.0.0.1:9621/webui可以进入 WebUI 做入库和查询/health用于日常探活数据落在命名卷里、跨down/up保留。若你的目标其实是 Docker/Podman 部署路径参见 docs/DockerDeployment.md。【免费下载链接】LightRAG[EMNLP2025] LightRAG: Simple and Fast Retrieval-Augmented Generation项目地址: https://gitcode.com/GitHub_Trending/li/LightRAG创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进