在 FAISS 的 langchain wiki 中,https://python.langchain.com/v0.2/docs/integrations/vectorstores/faiss/,它只讨论了将索引保存到文件。
db.save_local("faiss_index")
new_db = FAISS.load_local("faiss_index", embeddings)
docs = new_db.similarity_search(query)
如何将索引保存到数据库中,以便我们可以组织并并发访问多个索引?
在网上搜索但无法获得太多相关信息。 FAISS 可以与任何类型的分布式数据库一起使用吗?
事实上,FAISS 本身被视为内存数据库,以便基于相似性进行向量搜索,您可以直接使用 FAISS 接口中的
write_index
和 read_index
等函数或使用 save_local
来序列化和反序列化索引以及 LangChain 集成中的 load_local
,通常使用 pickle 进行序列化。
如果需要存储序列化文件,可以手动将它们作为二进制数据保存在 MongoDB 等 NoSQL 数据库中,然后在需要时反序列化并检索它们,但这不是最佳实践!
如果您正在寻找非内存且能够扩展系统的矢量数据库,您可能需要考虑使用专为此目的而设计的Milvus。