xb

xb (Extensible Builder) 使用场景决策指南

根据数据特征选择合适的技术方案


🎯 场景 1️⃣:语义搜索、个性化推荐

使用向量数据库(pgvector / Qdrant)

适用业务

数据特征

xb 示例

xb.Of(&Product{}).
    VectorSearch("embedding", userVector, 20).
    Eq("category", "electronics")

完整示例


🎯 场景 2️⃣:结构化长文档分析

使用 PageIndex

适用业务

数据特征

xb 示例

xb.Of(&PageIndexNode{}).
    Eq("doc_id", docID).
    Like("title", "财务稳定").
    Eq("level", 1)

完整示例


🎯 场景 3️⃣:混合检索(结构 + 语义)

使用 PageIndex + 向量数据库

适用业务

数据特征

xb 示例

// 第一步:PageIndex 定位章节
xb.Of(&PageIndexNode{}).
    Like("title", "投资建议").
    Eq("level", 2)

// 第二步:在章节内向量检索
xb.Of(&DocumentChunk{}).
    VectorSearch("embedding", queryVector, 10).
    Gte("page", chapterStartPage).
    Lte("page", chapterEndPage)

完整示例


🎯 场景 4️⃣:传统业务数据

使用标准 SQL(无需向量/PageIndex)

适用业务

数据特征

xb 示例

xb.Of(&User{}).
    Gte("age", 18).
    Eq("status", "active").
    Paged(...)

🤔 快速决策树

你的数据是...

├─ 碎片化(商品、用户、代码片段)
│  └─ 需要"相似"匹配?
│     ├─ 是 → 向量数据库 ✅
│     └─ 否 → 标准 SQL ✅
│
└─ 长文档(报告、手册、合同)
   └─ 有明确章节结构?
      ├─ 是 → PageIndex ✅
      │  └─ 还需要语义匹配?
      │     └─ 是 → PageIndex + 向量 ✅
      └─ 否 → 传统 RAG(分块 + 向量)✅

💡 核心原则

不要纠结技术选型,看数据特征:

1️⃣ 数据碎片化 + 需要相似度

向量数据库

2️⃣ 长文档 + 有结构 + 需要章节定位

PageIndex

3️⃣ 长文档 + 无结构 + 需要语义

传统 RAG(分块 + 向量)

4️⃣ 结构化数据 + 精确匹配

标准 SQL

5️⃣ 复杂场景

混合使用


📊 对比表

维度 向量数据库 PageIndex 传统 RAG 标准 SQL
数据类型 碎片化 长文档 长文档 结构化
需要语义 ⚠️ 可选
需要结构
典型文档 商品、代码 报告、合同 文章、博客 用户、订单
查询方式 相似度 章节定位 相似度 精确匹配
响应时间 快(<50ms) 中(100-500ms) 快(<100ms) 极快(<10ms)
准确率 80-90% 95%+ 70-85% 100%

🚀 实战案例

案例 1:电商系统

需求:
  - 商品推荐 → 向量数据库
  - 订单查询 → 标准 SQL
  - 用户管理 → 标准 SQL

方案:
  xb.Of(&Product{}).VectorSearch(...)  // 推荐
  xb.Of(&Order{}).Eq("user_id", ...)   // 查询

案例 2:金融机构

需求:
  - 年报分析(200+ 页)→ PageIndex
  - 相似企业查找 → 向量数据库
  - 客户信息 → 标准 SQL

方案:
  xb.Of(&PageIndexNode{}).Like("title", ...)  // 年报
  xb.Of(&Company{}).VectorSearch(...)         // 相似企业
  xb.Of(&Customer{}).Eq("region", ...)        // 客户

案例 3:技术文档平台

需求:
  - API 手册(500+ 页)→ PageIndex
  - 代码搜索 → 向量数据库
  - 博客文章 → 传统 RAG

方案:
  xb.Of(&PageIndexNode{}).Eq("level", 2)     // 手册章节
  xb.Of(&CodeSnippet{}).VectorSearch(...)    // 代码
  xb.Of(&ArticleChunk{}).VectorSearch(...)   // 博客

✅ 如何选择?

问自己 3 个问题

1. 数据是碎片化还是长文档?
   - 碎片化 → 向量 or SQL
   - 长文档 → PageIndex or RAG

2. 需要"相似"匹配还是"精确"匹配?
   - 相似 → 向量 or RAG
   - 精确 → SQL or PageIndex

3. 文档有没有明确的章节结构?
   - 有 → PageIndex
   - 无 → RAG

📚 相关文档


xb 支持所有场景 —— 一套 API,全部搞定!


最后更新: 2025-10-28
版本: v1.0.0