项目介绍:RAG on PostgreSQL
项目概览
RAG on PostgreSQL 是一个基于网络的聊天应用项目,它通过 API 后端与 OpenAI 的聊天模型交互,能够对 PostgreSQL 数据库表中的行进行查询和回答。项目的前端采用 React 和 FluentUI 构建,而后端使用 Python 和 FastAPI 实现。
该项目专为部署到 Azure 平台而设计,使用 Azure Developer CLI 进行部署。应用运行在 Azure Container Apps 上,数据库托管在 Azure PostgreSQL Flexible Server 中,模型则部署在 Azure OpenAI 上。
功能特点
该项目提供以下主要功能:
- 集成搜索能力:在 PostgreSQL 数据库中,使用 pgvector 扩展实现矢量搜索,并结合全文搜索功能,根据 RRF(倒数排名融合)将搜索结果进行整合。
- OpenAI 功能调用:可以将用户的查询转化为查询过滤条件。例如,将“是否有低于 30 美元的登山装备”转化为 SQL 的“WHERE price < 30”。
- 查询向量化:利用 OpenAI 的嵌入 API,将用户查询转化为向量。
系统架构
此应用部署后会利用用户分配的托管身份验证 Azure 服务,日志则存储在 Log Analytics 中。
上手指南
项目提供了多种开启方式:
- GitHub Codespaces:这是最快捷的方式,可以直接在浏览器中开启一个基于 Web 的 VS Code 实例。
- VS Code 开发容器:在本地 VS Code 环境中,通过开发容器扩展打开项目。
- 本地环境设置:需先确保本地安装 Azure Developer CLI、Node.js、Python、PostgreSQL 等必要工具。
部署步骤
无论在何种环境中打开项目,都可以将其部署到 Azure:
- 登录 Azure 账户。
- 创建新的 azd 环境以储存配置。
- (可选)自定义资源配置。
- 初始化资源并部署代码。
本地开发
准备工作
- 在本地设置环境文件,根据需求设置 OpenAI 或其它 API 使用参数。
- 安装必需的 Python 包和后端应用。
- 构建前端。
运行
通过 FastAPI 运行后端服务,同时通过 npm 运行前端服务,即可在浏览器中访问本地部署的应用。
费用
项目使用的各项 Azure 服务可能产生不同的费用,具体取决于使用的地区和资源配置。建议使用 Azure 定价计算器以获取更详细的费用估算。
安全指南
项目通过托管身份对 Azure 服务进行身份验证,并通过 GitHub Actions 进行代码安全扫描,确保模板的最佳安全实践。
指南和资源
项目详细文档可在项目 docs/
文件夹中找到,涵盖了项目流、数据自定义、现有资源部署等方面的信息。若有任何疑问或问题,请在问题追踪器中提出。