
如何用 Porter.yaml 在 Porter 上部署 Quivr 后端【免费下载链接】quivrOpiniated RAG for integrating GenAI in your apps Focus on your product rather than the RAG. Easy integration in existing products with customisation! Any LLM: GPT4, Groq, Llama. Any Vectorstore: PGVector, Faiss. Any Files. Anyway you want.项目地址: https://gitcode.com/GitHub_Trending/qui/quivrQuivr 是一个 RAG 项目其后端由 FastAPI 应用main:app、Celery worker/beat 定时任务和一个 Flower 监控入口组成。如果你想把这套后端整体放到 Porter 平台上运行而不是自己在服务器上逐条启动进程官方文档 Deploy with Porter 给出了完整的部署路径在 Porter 上新建项目、编写Porter.yaml、通过 environment group 注入环境变量最后点 Deploy 触发构建。完成后的结果是Porter 基于 backend/Dockerfile 构建镜像并启动 4 个后端服务其中 API 服务暴露在 5050 端口并通过/healthz做健康检查。前提条件按文档说明开始前需要两样东西一个 Porter 账号porter.runQuivr 的源代码仓库部署时 Porter 会读取其中的Porter.yaml并拉取代码。另外注意后端运行依赖一组通常写在本地.env文件里的环境变量部署到 Porter 时这些变量要通过 platform 的 environment group 提供变量清单见下文。第一步在 Porter 上创建项目登录 Porter 账号点击 New Project给项目命名文档示例用quivr-backend并选择一个 region点击 Create Project。创建后 Porter 会提示创建Porter.yaml文件该文件定义服务、构建配置和环境变量内容见下一步。第二步编写后端专用的 Porter.yaml在Porter.yaml中为 Quivr 后端定义以下配置与 docs/deployment/porter.mdx 一致version: v2 name: quivr-back services: - name: flower run: celery -A celery_worker flower -l info --port5555 type: web instances: 1 cpuCores: 0.1 ramMegabytes: 200 terminationGracePeriodSeconds: 30 port: 5555 domains: - name: demo-flower.quivr.app sleep: false - name: quivr-backend run: uvicorn main:app --reload --host 0.0.0.0 --port 5050 --workers 6 --log-level info type: web instances: 2 cpuCores: 1 ramMegabytes: 2700 terminationGracePeriodSeconds: 30 port: 5050 domains: - name: demo-api.quivr.app healthCheck: enabled: true httpPath: /healthz timeoutSeconds: 20 initialDelaySeconds: 60 sleep: false - name: quivr-beat run: celery -A celery_worker beat -l info type: worker instances: 1 cpuCores: 0.1 ramMegabytes: 200 terminationGracePeriodSeconds: 30 sleep: false - name: quivr-worker run: celery -A celery_worker worker -l info type: worker instances: 1 cpuCores: 1 ramMegabytes: 2030 terminationGracePeriodSeconds: 30 sleep: false build: context: ./backend/ method: docker dockerfile: ./backend/Dockerfile autoRollback: enabled: false四个服务各自的职责quivr-backend核心 APIuvicorn main:app监听 5050 端口2 个实例开启/healthz健康检查超时 20 秒启动后延迟 60 秒再首次检查quivr-workercelery -A celery_worker worker异步任务执行器quivr-beatcelery -A celery_worker beat定时任务调度器flowerCelery Flower 监控界面web 类型服务端口 5555。build部分指定构建上下文为./backend/使用 backend/Dockerfile 构建镜像构建方式是 docker。该 Dockerfile 基于python:3.11.6-slim-bullseye安装文档解析相关依赖pandoc、tesseract-ocr、libreoffice 等用 poetry 安装 backend 与 core 的依赖并EXPOSE 5050与上面的端口配置一致。两处需要你替换的值domains下的demo-api.quivr.app和demo-flower.quivr.app是文档中的示例域名应替换为你自己在 Porter 上分配/绑定的域名name: quivr-back是示例项目名可按你的项目命名调整。第三步配置后端环境变量Porter 通过 environment group 为服务注入环境变量在 Porter web portal 中把 Quivr 后端所需的环境变量加入一个 environment group。文档明确指出这些变量就是你在本地运行 Quivr 后端时通常写在.env文件里的那组变量。对照 Environment Variables 文档后端环境文件包含的变量有SUPABASE_URLSupabase 应用的连接地址SUPABASE_SERVICE_KEY服务端请求 Supabase 用的管理密钥OPENAI_API_KEY调用 OpenAI 服务的密钥JWT_SECRET_KEY签名和校验 JWT 的密钥CELERY_BROKER_URLCelery 消息队列的 broker 地址RedisRESEND_API_KEY、RESEND_EMAIL_ADDRESS、RESEND_CONTACT_SALES_FROM、RESEND_CONTACT_SALES_TO邮件发送服务 Resend 相关的密钥与地址PREMIUM_MAX_BRAIN_NUMBER、PREMIUM_MAX_BRAIN_SIZE、PREMIUM_DAILY_CHAT_CREDITpremium 用户的配额限制。第四步执行部署在 Porter 项目中点击 Deploy选择要部署的分支文档示例为main再次点击 Deploy。Porter 会按Porter.yaml完成镜像构建并拉起上述后端服务。验证部署结果文档为quivr-backend服务配置了健康检查httpPath: /healthz。对应到后端代码misc_routes.py 中的GET /healthz端点返回{status: ok}该路由在 main.py 中通过app.include_router(misc_router)挂载到应用根路径。因此部署完成后的核对方式是访问你的 API 域名下的/healthz例如https://你的API域名/healthz收到文档示例响应{status: ok}即说明 API 服务本身可用。同时可以在 Porter 控制台查看各服务状态quivr-backend2 个实例、flower监听 5555 端口、两个 Celery 服务正常存活。/healthz健康检查的判定由 Porter 平台按 yaml 中的timeoutSeconds: 20与initialDelaySeconds: 60执行服务启动慢于该窗口时可能先经历检查未通过属配置本身定义的行为。边界说明本文只覆盖 Quivr 后端部署。同一篇 Porter 文档 还给出了前端部署的Porter.yamlquivr-frontend服务端口 3000构建上下文./frontend、Dockerfile 为 frontend/Dockerfile及前端环境变量配置步骤如你要部署完整应用需另行处理前端所需变量清单见 Environment Variables 文档 的 Frontend Environment File 一节NEXT_PUBLIC_BACKEND_URL、NEXT_PUBLIC_SUPABASE_URL等。示例 yaml 中autoRollback.enabled为false即部署失败时不会自动回滚这一点在改配置后部署时需要留意。【免费下载链接】quivrOpiniated RAG for integrating GenAI in your apps Focus on your product rather than the RAG. Easy integration in existing products with customisation! Any LLM: GPT4, Groq, Llama. Any Vectorstore: PGVector, Faiss. Any Files. Anyway you want.项目地址: https://gitcode.com/GitHub_Trending/qui/quivr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考