Skip to content

RAG 向量存储

TIP

向量数据库负责存储文本的向量表示并支持相似度检索。

嵌入向量

python
from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vector = embeddings.embed_query("什么是机器学习?")
print(len(vector))  # 1536 维

向量数据库对比

数据库特点
FAISS内存型,速度快
Chroma轻量级,易用
Milvus分布式,大规模
Pinecone托管服务

FAISS 使用

python
from langchain_community.vectorstores import FAISS

vectorstore = FAISS.from_texts(texts=chunks, embedding=OpenAIEmbeddings())
vectorstore.save_local("faiss_index")
vectorstore = FAISS.load_local("faiss_index", OpenAIEmbeddings(), allow_dangerous_deserialization=True)

Chroma 使用

python
from langchain_chroma import Chroma

vectorstore = Chroma.from_texts(texts=chunks, embedding=OpenAIEmbeddings(), persist_directory="./chroma_db")
docs = vectorstore.similarity_search("机器学习基础", k=3)

检索参数

python
# 相似度阈值
retriever = vectorstore.as_retriever(
    search_type="similarity_score_threshold",
    search_kwargs={"score_threshold": 0.7, "k": 3}
)

# MMR 最大边际相关性
retriever = vectorstore.as_retriever(
    search_type="mmr",
    search_kwargs={"k": 3, "fetch_k": 10, "lambda_mult": 0.5}
)