Real Estate Dataset
收藏Real Estate Vector Search API 数据集概述
概述
该项目实现了一个基于向量搜索的房地产推荐系统,使用 MongoDB、OpenAI 嵌入和 Flask。它允许用户使用自然语言查询搜索房产,利用向量相似性找到相关房源,并提供 AI 增强的响应。
数据集
- 文件名:
dataset.csv - 位置:
/data/dataset.csv - 用途: 包含房地产数据,用于生成嵌入向量并存储在 MongoDB 中。
数据加载和嵌入
- 脚本:
load_data.py - 位置:
/scripts/load_data.py - 功能:
- 加载房地产数据
- 为每个房产生成嵌入向量
- 将数据和嵌入向量存储在 MongoDB 中
- 创建必要的向量搜索索引
技术栈
- 编程语言: Python 3.8+
- 框架: Flask
- 数据库: MongoDB Atlas
- API: OpenAI API
安装和运行
-
克隆仓库: bash git clone https://github.com/yourusername/vector_search_project.git cd vector_search_project
-
创建并激活虚拟环境: bash python -m venv venv source venv/bin/activate # Windows 使用
venvScriptsactivate -
安装依赖: bash pip install -r requirements.txt
-
设置环境变量: 创建
.env文件并设置以下变量:OPENAI_API_KEY=your_openai_api_key MONGO_URI=your_mongodb_connection_string
-
加载数据并生成嵌入: bash python scripts/load_data.py
-
启动应用: bash python app.py
API 使用
-
端点:
POST /vector_search -
请求体: json { "query": "3 bedroom house in Aguadilla under $200,000" }
-
响应: json { "response": "Detailed AI-generated response about matching properties", "source_information": "Information about the properties used to generate the response" }
示例查询
-
基本位置和卧室查询: json { "query": "3 bedroom houses in Aguadilla" }
-
价格范围查询: json { "query": "homes under $150,000 in San Juan" }
-
复杂特征查询: json { "query": "large houses with more than 2000 square feet and a pool" }
技术细节
-
向量搜索实现: 使用 MongoDB 的向量搜索功能,通过以下管道进行搜索: python pipeline = [ { "$vectorSearch": { "index": "vector_index", "queryVector": query_embedding, "path": "embedding_vector", "numCandidates": 150, "limit": 5 } }, { "$project": { "_id": 0, "brokered_by": 1, "status": 1, "price": 1, # ... 其他字段 } } ]
-
嵌入生成: 使用 OpenAI 的
text-embedding-3-small模型生成嵌入向量。
常见问题
- 无结果返回:
- 验证向量索引是否正确创建
- 检查文档是否包含嵌入向量
- 确保查询嵌入的维度与文档嵌入匹配
- MongoDB 连接问题:
- 验证
.env文件中的 MongoDB URI - 确保 IP 在 MongoDB Atlas 中被允许
- 验证
贡献
- 分叉仓库
- 为新功能创建分支
- 提交更改
- 推送到分支
- 创建新的 Pull Request
许可证
该项目基于 MIT 许可证 - 查看 LICENSE 文件获取详细信息。




