本目录包含 xb 在 AI 应用场景下的集成指南、最佳实践和示例代码。xb 的 AI-First 设计使其成为 RAG、AI Agent 和向量检索应用的理想选择。
package main
import (
"github.com/fndome/xb"
)
type DocumentChunk struct {
ID int64 `json:"id"`
Content string `json:"content"`
Embedding []float32 `json:"embedding"`
Metadata string `json:"metadata"` // JSON
DocID *int64 `json:"doc_id"` // 原文档ID(非主键,可为 nil)
}
func SearchSimilarChunks(queryVector []float32, limit int) (string, []interface{}, error) {
return xb.Of(&DocumentChunk{}).
VectorSearch("embedding", queryVector).
Limit(limit).
Build()
}
func HybridSearch(queryVector []float32, docType string, minScore float64) (string, error) {
built := xb.Of(&DocumentChunk{}).
VectorSearch("embedding", queryVector, 20). // 返回 20 条
Eq("doc_type", docType). // 标量过滤
Ne("status", "deleted"). // 排除已删除
QdrantX(func(qx *xb.QdrantBuilderX) {
qx.ScoreThreshold(float32(minScore))
}).
Build()
return built.ToQdrantJSON()
}
from langchain.vectorstores import Qdrant
from langchain.embeddings import OpenAIEmbeddings
# 使用 xb 生成的 Qdrant 查询
vector_store = Qdrant(
client=qdrant_client,
collection_name="documents",
embeddings=OpenAIEmbeddings(),
)
results = vector_store.similarity_search_with_score(
query="如何使用 xb?",
k=5,
filter={
"must": [
{"key": "doc_type", "match": {"value": "tutorial"}}
]
}
)
┌─────────────────────────────────────────────────────────┐
│ 用户查询 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ LLM Embedding API │
│ (OpenAI, Cohere, 本地模型) │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ xb 查询构建 │
│ • VectorSearch() - 向量相似度 │
│ • Eq/Ne/In - 元数据过滤 │
│ • WithScoreThreshold - 相关性阈值 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Qdrant / PostgreSQL+pgvector │
│ (向量数据库层) │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 重排序 & 后处理 │
│ • MMR 多样性算法 │
│ • 元数据增强 │
│ • 上下文合并 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ LLM 生成回答 │
│ (GPT-4, Claude, Llama) │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ AI Agent (GPT-4) │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Function Calling / Tool Use │
│ • search_knowledge_base() │
│ • filter_by_metadata() │
│ • get_similar_documents() │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ xb 动态查询构建 (JSON Schema) │
│ • 参数验证 │
│ • 查询优化 │
│ • 安全检查 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 数据库执行 │
└─────────────────────────────────────────────────────────┘
examples/rag-knowledge-base/examples/langchain-agent/examples/hybrid-search-api/| 数据规模 | Top-K | 响应时间 (P95) | 吞吐量 (QPS) |
|---|---|---|---|
| 100K | 10 | 15ms | 2000 |
| 1M | 10 | 30ms | 1000 |
| 10M | 10 | 80ms | 400 |
| 数据规模 | 过滤条件 | 响应时间 (P95) | 吞吐量 (QPS) |
|---|---|---|---|
| 100K | 2个 | 50ms | 500 |
| 1M | 2个 | 120ms | 200 |
| 10M | 2个 | 400ms | 80 |
测试环境: 4C8G, SSD, 本地部署
go run ./tools/gen-json-schema -type DocumentChunk -output schema.json
go run ./tools/gen-openapi -package main -output openapi.yaml
go run ./tools/nl2sql -query "查找最近7天创建的活跃用户"
我们欢迎社区贡献新的 AI 应用集成和示例!
详见: CONTRIBUTING.md
与 xb 主项目相同,采用 MIT 许可证。
让 AI 和人类都能轻松构建高性能数据库应用! 🚀