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}
)