第八章:最佳实践¶
数据建模¶
向量维度选择¶
向量维度选择:
- OpenAI text-embedding-3-small: 1536
- OpenAI text-embedding-3-large: 3072
- Cohere embed-v3: 1024
- 开源模型: 通常 768 或 1024
权衡:
- 维度越高,精度越好,但存储和计算成本越高
- 建议根据实际需求选择
元数据设计¶
# 推荐的元数据字段
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True),
FieldSchema(name="doc_id", dtype=DataType.VARCHAR, max_length=64),
FieldSchema(name="title", dtype=DataType.VARCHAR, max_length=512),
FieldSchema(name="content", dtype=DataType.VARCHAR, max_length=65535),
FieldSchema(name="category", dtype=DataType.VARCHAR, max_length=64),
FieldSchema(name="created_at", dtype=DataType.INT64),
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=768)
]
索引选择¶
def choose_index(data_size):
"""根据数据量选择索引"""
if data_size < 100000:
return {"index_type": "FLAT"} # 小数据量用 FLAT
elif data_size < 10000000:
return {"index_type": "IVF_FLAT", "params": {"nlist": 1024}}
else:
return {"index_type": "HNSW", "params": {"M": 16, "efConstruction": 256}}
监控指标¶
# 关键监控指标
metrics = {
"latency_p99": "搜索延迟 P99",
"qps": "每秒查询数",
"recall": "召回率",
"memory_usage": "内存使用",
"index_size": "索引大小"
}
小结¶
最佳实践要点:
- 数据建模:维度选择、元数据设计
- 索引选择:根据数据量选择
- 监控指标:延迟、QPS、召回率
完成本教程后,你应该能够设计和优化向量数据库应用。