# Ollama-Mongodb-Qdrant-Fastapi-Rag **Repository Path**: xiaolinlu/ollama-mongodb-qdrant-fastapi-rag ## Basic Information - **Project Name**: Ollama-Mongodb-Qdrant-Fastapi-Rag - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-21 - **Last Updated**: 2025-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RAG System 文档 ## 概述 RAG System(Retrieval Augmented Generation System)是一个基于 Ollama 和 Qdrant 构建的检索增强生成系统。该系统允许用户上传文档,并使用自然语言查询这些文档,系统会结合文档内容生成相关回答。系统使用 FastAPI 作为后端框架,MongoDB 存储文档内容,Qdrant 存储文档向量,借助 Ollama 生成向量和文本响应。 ## 主要功能 1. **文档上传**:用户可以通过 API 上传文档,系统会将文档内容存储到 MongoDB 中,并使用 Ollama 生成文档的向量表示,最后将向量存储到 Qdrant 中。 2. **文档查询**:用户可以通过 API 输入自然语言查询,系统会使用 Ollama 生成查询向量,从 Qdrant 中检索相关文档,然后结合这些文档内容,使用 Ollama 生成回答。 ## 系统架构 - **FastAPI**:作为后端框架,提供 RESTful API 接口,处理文档上传和查询请求。 - **MongoDB**:用于存储上传文档的原始内容。 - **Qdrant**:用于存储文档的向量表示,支持高效的向量搜索。 - **Ollama**:用于生成文档和查询的向量,以及根据文档上下文生成回答。 ## 环境要求 - Python 3.7+ - FastAPI - PyMongo - Qdrant Client - Requests - Uvicorn ## 安装依赖 在项目根目录下执行以下命令安装所需依赖: ```bash pip install fastapi pymongo qdrant-client requests uvicorn ``` ## 启动服务 确保 MongoDB、Qdrant 和 Ollama 服务已经启动,然后在项目根目录下执行以下命令启动 FastAPI 服务: ```bash python /home/xiaolinlu/framework/ragsys/main.py ``` ## API 接口 ### 文档上传接口 - **URL**:`/upload/` - **方法**:`POST` - **参数**:`file`(上传的文件) - **响应示例**: ```json { "message": "Document uploaded successfully" } ``` ### 文档查询接口 - **URL**:`/query/` - **方法**:`GET` - **参数**:`query`(自然语言查询) - **响应示例**: ```json { "answer": "这里是系统生成的回答" } ``` ## 注意事项 - 确保 MongoDB、Qdrant 和 Ollama 服务正常运行,并且配置的地址和端口正确。 - 可以根据实际情况调整 `main.py` 中 `ensure_qdrant_collection` 函数里向量的维度。 ## 述 test_main.py 是为 main.py 开发的测试脚本, main.py 实现了一个基于 FastAPI、MongoDB、Qdrant 和 Ollama 的检索增强生成(RAG)系统。本测试脚本借助 pytest 和 fastapi.testclient 对 main.py 里的 API 端点开展单元测试,通过模拟外部服务(如 MongoDB、Qdrant 和 Ollama)来保证测试的独立性。 ## 主要功能 1. 测试文档上传接口 :对 /upload/ 这个 API 端点进行测试,模拟文件上传、MongoDB 插入操作以及 Ollama 向量生成,验证接口返回状态码和响应内容是否符合预期。 2. 测试文档查询接口 :对 /query/ 这个 API 端点进行测试,模拟查询、Ollama 向量生成、Qdrant 搜索结果以及 Ollama 回答生成,验证接口返回状态码和响应内容是否符合预期。 ## 环境要求 - Python 3.7+ - pytest :用于执行测试。 - fastapi[all] :包含 fastapi.testclient ,用于测试 FastAPI 应用。 ## 运行测试 在项目根目录下执行以下命令来运行测试: ```bash pytest test_main.py ``` ## 注意事项 ## 贡献 如果你想为这个项目做出贡献,请提交 Pull Request 或提出 Issue。