文章目录
前言
Facebook AI 相似性搜索 (FAISS
) 是一个用于高效相似性搜索和密集向量聚类的库。它包含在任意大小的向量集合中进行搜索的算法,甚至可以处理可能不适合 RAM 的向量。它还包括用于评估和参数调优的支持代码。
LangChain
在其langchain_community.vectorstores
包中实现了个FAISS
类,用来操作FAISS
向量数据库。
一、原型定义
上图可知,FAISS
类派生至VectorStore
类(LangChain中的向量数据库抽象基类-VectorStore),实现了其中的add_texts
、from_texts
和similarity_search
三个方法。
二、代码解析
查看FAISS
的代码,可知:
1、add_texts方法
add_texts
覆盖了父类中的同名方法,将参数中的文本数据通过嵌入模型向量化后,结合元数据一起保存到了FAISS
数据库中。
add_texts(
self,
texts: Iterable[str],
metadatas: Optional[List[dict]] = None,
ids: Optional[List[str]] = None,
**kwargs: Any,
) -> List[str]
1.1、应用样例
vstore = FAISS(...)
vstore.add_texts(...)