Skip to content

datalayers-io/datalayers-vector-demo

Repository files navigation

RAG Demo - 多模态检索增强生成系统

这是一个基于 LangChain、ARK Multimodal API 和 Datalayers 的 RAG (Retrieval-Augmented Generation) 演示项目,支持统一的多模态向量检索。

功能特性

  • 🚀 统一多模态 Embedding: 使用 ARK Multimodal API 统一处理文本和图片的向量化
  • 📝 文本 RAG: 使用 LangChain 对文本进行智能分块,支持中英文文档
  • 🖼️ 图片 RAG: 支持图片内容的语义检索,可通过文本描述搜索图片
  • 🔍 多种搜索模式:
    • 文本到文本搜索
    • 文本到图片搜索
    • 图片到图片搜索
    • 混合内容搜索
  • 🌐 RESTful API: 提供完整的 HTTP API 接口
  • 💻 Web UI: 友好的网页界面,支持实时搜索和展示
  • 🗄️ DataLayers 向量功能: 高性能向量存储和检索
  • 🤖 智能对话: 集成 OpenAI Chat API,支持基于检索内容的智能问答

环境要求

  • Python 3.11+
  • uv 包管理器
  • ARK API Key(用于多模态 embedding)
  • OpenAI API Key(用于聊天功能)
  • Datalayers 数据库实例

配置环境变量

编辑 .env 文件,填入你的配置:

# OpenAI API Configuration (用于聊天功能)
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_BASE_URL=https://your-openai-endpoint/v1
CHAT_MODEL=gpt-4o

# ARK Multimodal API Configuration (用于统一embedding)
ARK_API_KEY=your_ark_api_key_here

# Image Processing Configuration
USE_MULTIMODAL_EMBEDDING=true
INCLUDE_IMAGE_DESCRIPTION=true

# FlightSQL Database Configuration
FLIGHTSQL_HOST=your_datalayers_host
FLIGHTSQL_PORT=8360
FLIGHTSQL_USERNAME=admin
FLIGHTSQL_PASSWORD=your_password
FLIGHTSQL_DATABASE=your_database

快速开始

1. 启动 HTTP 服务器和 Web UI

uv run python http_server.py --host 0.0.0.0 --port 8000

然后访问 http://localhost:8000 使用 Web 界面。

2. 处理和索引数据

# 处理并索引文本和图片数据
uv run python process_embeddings.py

3. 测试统一 Embedding

# 验证 ARK multimodal API 功能
uv run python test_unified_embedding.py

API 接口说明

RESTful API 端点

  • GET /: Web UI 主界面
  • GET /api: API 信息和端点列表
  • POST /search/text: 文本到文本搜索
  • POST /search/text-to-image: 文本到图片搜索
  • POST /search/image-to-image: 图片到图片搜索
  • GET /search/hybrid: 混合内容搜索
  • POST /chat: 智能对话接口(支持 RAG 增强)
  • GET /health: 健康检查端点

使用示例

文本搜索

curl -X POST http://localhost:8000/search/text \
  -H "Content-Type: application/json" \
  -d '{
    "query": "向量数据库",
    "limit": 5,
    "similarity_threshold": 0.1
  }'

文本到图片搜索

curl -X POST http://localhost:8000/search/text-to-image \
  -F "query=风景图片" \
  -F "limit=10"

智能对话

curl -X POST http://localhost:8000/chat \
  -H "Content-Type: application/json" \
  -d '{
    "message": "什么是向量数据库?",
    "use_rag": true,
    "limit": 5
  }'

项目结构

rag-demo/
├── src/rag_demo/
│   ├── __init__.py
│   ├── config.py             # 配置管理
│   ├── database.py           # Datalayers 连接
│   ├── text_processor.py     # 文本处理和向量化
│   ├── image_processor.py    # 图片处理和向量化
│   ├── unified_processor.py  # 统一的多模态处理器
│   ├── vector_search.py      # 向量相似度搜索
│   └── rag_system.py         # RAG 系统核心
├── data/                     # 数据目录
│   ├── text/                 # 文本数据
│   │   └── datalayers-docs/  # DataLayers 产品文档(中英文)
│   └── images/               # 图片数据
│       └── RP2K.zip          # RP2K 图片数据集
├── static/                   # 静态资源文件
├── templates/                # HTML 模板
├── http_server.py            # HTTP 服务器和 API
├── process_embeddings.py     # 数据处理和索引脚本
├── test_unified_embedding.py # 测试脚本
├── .env                      # 环境配置
└── README.md                 # 使用说明

核心技术特点

1. 统一多模态 Embedding

  • 使用 ARK Multimodal API 统一处理文本和图片
  • 文本和图片在同一向量空间中表示
  • 支持跨模态的语义检索

2. 高性能向量检索

  • 基于 FlightSQL 的分布式向量存储
  • 支持余弦相似度计算
  • 可扩展的向量索引架构

3. 智能文档处理

  • 使用 LangChain 进行智能文本分块
  • 保留文档结构和上下文信息
  • 支持多种文档格式(PDF、Markdown、纯文本等)

4. Web 应用架构

  • FastAPI 提供高性能 RESTful API
  • 响应式 Web UI 设计
  • 支持实时搜索和结果展示

数据准备

下载数据集

在使用项目之前,需要手动下载以下数据集:

文本数据

  • DataLayers 文档:需要手动下载 DataLayers 产品文档
  • 放置位置:data/text/datalayers-docs/
  • 格式:Markdown 文件
  • 包含内容:
    • 产品介绍和架构说明
    • 安装和配置指南
    • SQL 参考文档
    • 开发指南和API文档
    • 集成示例和最佳实践

图片数据

  • RP2K 数据集:需要手动下载 RP2K (Rich Picture 2K) 数据集
  • 下载后放置位置:data/images/RP2K.zip
  • 格式:JPEG 图片文件压缩包
  • 内容:包含多样化的图片内容,适合测试图片检索功能
  • 处理:解压后会在 data/images/all/ 目录下生成训练和测试图片

注意: 这两个数据集需要手动下载并放置到指定目录,项目仓库中不包含这些大型数据文件。

注意事项

  1. API 配额: 注意 ARK API 和 OpenAI API 的使用配额
  2. 数据隐私: 确保敏感数据不被上传到未知外部 API
  3. 向量维度: ARK Multimodal API 生成的向量维度可能较大,注意存储空间
  4. 中文支持: 系统完全支持中文内容的处理和检索

技术栈

  • 包管理: uv
  • Web 框架: FastAPI
  • 文本处理: LangChain
  • 向量化: ARK Multimodal API
  • AI 对话: OpenAI Chat API
  • 向量数据库: Datalayers + FilghtSQL + PyArrow
  • 前端: HTML + JavaScript + CSS

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published