Azure-Samples/rag-postgres-openai-python
A RAG app to ask questions about rows in a database table. Deployable on Azure Container Apps with PostgreSQL Flexible Server.
解决的问题
该项目提供了一个基于网页的聊天应用程序的参考实现,能够回答存储在 PostgreSQL 数据库中的数据相关问题。它解决了将结构化数据库查询与非结构化自然语言搜索相结合的挑战,从而基于私有数据提供准确的答案。
工作原理
该应用程序采用检索增强生成(RAG)架构。它使用 OpenAI 嵌入 API 将用户查询转换为向量,并在 PostgreSQL 中使用 pgvector 扩展进行向量搜索,同时结合标准全文搜索,通过倒数排名融合(RRF)合并结果。此外,它还使用 OpenAI 函数调用将自然语言查询转换为 SQL 过滤条件(例如,将“价格低于 30 美元的登山装备?”转换为 WHERE 子句)。
适用人群
希望使用 PostgreSQL 作为向量存储来实现 RAG 模式的开发人员,特别是那些计划在 Azure 上使用 Container Apps 和 Azure OpenAI 部署的开发者,同时也支持使用 Ollama 的本地开发。
主要亮点
- 混合搜索:结合向量搜索与全文搜索,提升检索准确性。
- SQL 转换:利用 LLM 函数调用将自然语言转换为数据库过滤条件。
- Azure 集成:通过 Azure Developer CLI(
azd)实现简化部署。 - 跨平台支持:兼容 Azure OpenAI、OpenAI.com 以及通过 Ollama 使用的本地模型。
相关
- 项目
- 项目
- 项目
- 项目
- 项目