tugraph-analytics icon indicating copy to clipboard operation
tugraph-analytics copied to clipboard

[Graph + AI] Support for vector indexing in streaming graph computing engine

Open Loognqiang opened this issue 1 year ago • 1 comments

Support for vector indexing in streaming graph computing engine.

Loognqiang avatar Nov 22 '24 13:11 Loognqiang

技术架构设计

1. 状态管理层扩展

GeaFlow采用分层的状态管理架构,包括State API、State执行层、Store层和持久化层。向量索引功能需要在以下层次进行扩展:

State API层扩展:

  • 新增VectorState接口,提供向量存储和检索操作
  • 扩展图状态API,支持向量属性的存储和查询
  • 添加向量相似度查询接口(cosine、dot product、euclidean)

Store层扩展:

  • 实现向量专用存储引擎插件
  • 扩展现有存储后端(RocksDB、Memory等)以支持向量操作

2. 存储引擎插件开发

基于GeaFlow的可插拔存储架构,开发专门的向量索引存储引擎:

向量存储接口设计:

  • 继承IStaticGraphStore接口,扩展向量索引功能
  • 实现向量CRUD操作和相似度检索
  • 支持批量向量插入和更新

存储实现选项:

  • 方案1: 基于现有RocksDB扩展,集成向量索引库(如FAISS、Annoy)
  • 方案2: 开发独立的向量存储插件,集成专业向量数据库(如Milvus、Pinecone)
  • 方案3: 内存向量存储实现,用于小规模高性能场景

3. 图模式扩展

扩展GeaFlow的图模式定义,支持向量属性:

属性类型扩展:

  • 在属性类型中新增VECTOR类型
  • 支持向量维度配置和索引类型选择
  • 扩展索引配置,支持向量索引算法参数

4. DSL和API功能扩展

DSL扩展(SQL+GQL):

  • 新增向量相似度函数:VECTOR_SIMILARITY(), COSINE_SIMILARITY(), DOT_PRODUCT()
  • 支持向量KNN查询:SELECT * FROM vertices WHERE VECTOR_KNN(embedding, target_vector, k)
  • 向量范围查询和聚合操作

API扩展:

  • 扩展GraphState API,支持向量属性操作
  • 新增向量计算函数和UDF支持
  • 提供向量批量处理接口

5. AI集成增强

基于GeaFlow现有的AI推理能力进行扩展:

向量化支持:

  • 扩展UDF框架,支持embedding生成
  • 集成主流embedding模型(如Sentence-BERT、OpenAI embeddings)
  • 支持实时向量生成和索引更新

推理优化:

  • 向量相似度计算的GPU加速支持
  • 批量向量处理优化
  • 分布式向量检索

具体实现方案

阶段一:核心向量存储实现(2-3个月)

  1. 向量存储接口设计

    • 定义IVectorStore接口
    • 实现基于RocksDB的向量存储
    • 集成FAISS库进行ANN搜索
  2. 状态管理扩展

    • 实现VectorState
    • 扩展状态序列化/反序列化
    • 向量状态的持久化和恢复
  3. 基础向量操作

    • 向量CRUD操作
    • 基本相似度计算
    • 简单的KNN查询

阶段二:查询语言和API扩展(1-2个月)

  1. DSL扩展

    • 向量函数集成到SQL解析器
    • 查询优化器扩展
    • 执行计划生成
  2. API增强

    • Graph API向量操作扩展
    • 向量批处理接口
    • 异步向量查询支持

阶段三:性能优化和高级功能(2-3个月)

  1. 性能优化

    • 向量索引的并行构建
    • 分布式向量检索
    • 内存管理优化
  2. 高级功能

    • 多种向量索引算法支持
    • 向量聚合和统计功能
    • 增量向量索引更新
  3. AI集成深化

    • 流式向量生成
    • 在线学习支持
    • 向量质量监控

kitalkuyo-gita avatar Aug 24 '25 04:08 kitalkuyo-gita