根据数据特征选择合适的技术方案
适用业务:
数据特征:
xb 示例:
xb.Of(&Product{}).
VectorSearch("embedding", userVector, 20).
Eq("category", "electronics")
完整示例:
适用业务:
数据特征:
xb 示例:
xb.Of(&PageIndexNode{}).
Eq("doc_id", docID).
Like("title", "财务稳定").
Eq("level", 1)
完整示例:
适用业务:
数据特征:
xb 示例:
// 第一步:PageIndex 定位章节
xb.Of(&PageIndexNode{}).
Like("title", "投资建议").
Eq("level", 2)
// 第二步:在章节内向量检索
xb.Of(&DocumentChunk{}).
VectorSearch("embedding", queryVector, 10).
Gte("page", chapterStartPage).
Lte("page", chapterEndPage)
完整示例:
适用业务:
数据特征:
xb 示例:
xb.Of(&User{}).
Gte("age", 18).
Eq("status", "active").
Paged(...)
你的数据是...
├─ 碎片化(商品、用户、代码片段)
│ └─ 需要"相似"匹配?
│ ├─ 是 → 向量数据库 ✅
│ └─ 否 → 标准 SQL ✅
│
└─ 长文档(报告、手册、合同)
└─ 有明确章节结构?
├─ 是 → PageIndex ✅
│ └─ 还需要语义匹配?
│ └─ 是 → PageIndex + 向量 ✅
└─ 否 → 传统 RAG(分块 + 向量)✅
不要纠结技术选型,看数据特征:
→ 向量数据库
→ PageIndex
→ 传统 RAG(分块 + 向量)
→ 标准 SQL
→ 混合使用
| 维度 | 向量数据库 | PageIndex | 传统 RAG | 标准 SQL |
|---|---|---|---|---|
| 数据类型 | 碎片化 | 长文档 | 长文档 | 结构化 |
| 需要语义 | ✅ | ⚠️ 可选 | ✅ | ❌ |
| 需要结构 | ❌ | ✅ | ❌ | ✅ |
| 典型文档 | 商品、代码 | 报告、合同 | 文章、博客 | 用户、订单 |
| 查询方式 | 相似度 | 章节定位 | 相似度 | 精确匹配 |
| 响应时间 | 快(<50ms) | 中(100-500ms) | 快(<100ms) | 极快(<10ms) |
| 准确率 | 80-90% | 95%+ | 70-85% | 100% |
需求:
- 商品推荐 → 向量数据库
- 订单查询 → 标准 SQL
- 用户管理 → 标准 SQL
方案:
xb.Of(&Product{}).VectorSearch(...) // 推荐
xb.Of(&Order{}).Eq("user_id", ...) // 查询
需求:
- 年报分析(200+ 页)→ PageIndex
- 相似企业查找 → 向量数据库
- 客户信息 → 标准 SQL
方案:
xb.Of(&PageIndexNode{}).Like("title", ...) // 年报
xb.Of(&Company{}).VectorSearch(...) // 相似企业
xb.Of(&Customer{}).Eq("region", ...) // 客户
需求:
- API 手册(500+ 页)→ PageIndex
- 代码搜索 → 向量数据库
- 博客文章 → 传统 RAG
方案:
xb.Of(&PageIndexNode{}).Eq("level", 2) // 手册章节
xb.Of(&CodeSnippet{}).VectorSearch(...) // 代码
xb.Of(&ArticleChunk{}).VectorSearch(...) // 博客
1. 数据是碎片化还是长文档?
- 碎片化 → 向量 or SQL
- 长文档 → PageIndex or RAG
2. 需要"相似"匹配还是"精确"匹配?
- 相似 → 向量 or RAG
- 精确 → SQL or PageIndex
3. 文档有没有明确的章节结构?
- 有 → PageIndex
- 无 → RAG
xb 支持所有场景 —— 一套 API,全部搞定! ✅
最后更新: 2025-10-28
版本: v1.0.0