跳转到主要内容
🧠

向量数据库入门

📅 2026-06-25 📂 LLM ⏱ 1 min 162 words

向量数据库入?

什么是向量数据?

向量数据库是专门用于存储和检索高维向量的数据库,是构建语义搜索、RAG等应用的核心组件?

主流向量数据?

数据? 特点 适用场景
FAISS Facebook开源,高性能 研究和小规模应用
ChromaDB 轻量级,易用 原型开?
Pinecone 全托管,易扩? 生产环境
Milvus 开源,分布? 大规模生产环?
Weaviate 开源,支持混合搜索 语义搜索

FAISS使用

import faiss
import numpy as np

dimension = 128
index = faiss.IndexFlatL2(dimension)

vectors = np.random.random((1000, dimension)).astype('float32')
index.add(vectors)

query = np.random.random((1, dimension)).astype('float32')
distances, indices = index.search(query, k=5)

print(f"最?个邻? {indices[0]}")
print(f"距离: {distances[0]}")

ChromaDB使用

import chromadb

client = chromadb.Client()
collection = client.create_collection("my_collection")

collection.add(
    documents=["机器学习是AI的子领域", "深度学习使用神经网络"],
    ids=["doc1", "doc2"],
    metadatas=[{"source": "textbook"}, {"source": "article"}]
)

results = collection.query(query_texts=["什么是AI?], n_results=2)
print(results)

Milvus使用

from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType

connections.connect("default", host="localhost", port="19530")

fields = [
    FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
    FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128),
    FieldSchema(name="text", dtype=DataType.VARCHAR, max_length=200)
]

schema = CollectionSchema(fields, description="Document embeddings")
collection = Collection("documents", schema)

向量搜索优化

# IVF索引 - 适合大规模数?
nlist = 100
quantizer = faiss.IndexFlatL2(dimension)
index = faiss.IndexIVFFlat(quantizer, dimension, nlist)
index.train(vectors)
index.add(vectors)

# HNSW索引 - 适合高召回率场景
index_hnsw = faiss.IndexHNSWFlat(dimension, 32)
index_hnsw.add(vectors)

总结

向量数据库是AI应用的基础设施,根据规模和需求选择合适的方案,可以构建高效的语义搜索和RAG系统?