document_stores.implementations.faiss_vector_store

FAISS向量存储实现

基于Facebook AI Similarity Search (FAISS) 的高性能向量存储实现, 支持持久化存储、索引优化和增量更新。

Classes

FAISSVectorStore(config)

基于FAISS的向量存储实现。

class document_stores.implementations.faiss_vector_store.FAISSVectorStore(config)[source]

Bases: BaseVectorStore

基于FAISS的向量存储实现。

提供高性能的向量相似度搜索,支持多种索引类型和持久化存储。 适用于中到大规模的向量检索场景。

__init__(config)[source]

初始化FAISS向量存储。

Parameters:

config (Dict[str, Any]) – FAISS配置字典

initialize()[source]

初始化FAISS索引。

Returns:

初始化成功返回True,失败返回False

Return type:

bool

add_documents(documents, embeddings=None)[source]

批量添加文档到FAISS索引。

Parameters:
  • documents (List[Document]) – Haystack文档列表

  • embeddings (List[List[float]] | None) – 对应的向量嵌入列表

Returns:

添加成功返回True,失败返回False

Return type:

bool

search(query_embedding, top_k=5, filters=None)[source]

在FAISS索引中进行向量搜索。

Parameters:
  • query_embedding (List[float]) – 查询向量

  • top_k (int) – 返回的最相似文档数量

  • filters (Dict[str, Any] | None) – 元数据过滤条件(FAISS本身不支持,需要后处理)

Returns:

包含(文档, 相似度得分)的元组列表

Return type:

List[Tuple[Document, float]]

get_document_by_id(doc_id)[source]

根据文档ID获取文档。

Parameters:

doc_id (str) – 文档ID

Returns:

文档对象,不存在则返回None

Return type:

Document | None

update_document(doc_id, document, embedding=None)[source]

更新文档(FAISS不支持原地更新,需要重建索引)。

Parameters:
  • doc_id (str) – 文档ID

  • document (Document) – 新的文档对象

  • embedding (List[float] | None) – 新的向量嵌入

Returns:

更新成功返回True,失败返回False

Return type:

bool

delete_document(doc_id)[source]

删除文档(FAISS不支持删除,仅从映射中移除)。

Parameters:

doc_id (str) – 文档ID

Returns:

删除成功返回True,失败返回False

Return type:

bool

delete_all_documents()[source]

删除所有文档。

Returns:

删除成功返回True,失败返回False

Return type:

bool

get_document_count()[source]

获取文档总数。

Returns:

文档总数

Return type:

int

save_index(path)[source]

保存FAISS索引和元数据到文件。

Parameters:

path (str) – 保存目录路径

Returns:

保存成功返回True,失败返回False

Return type:

bool

load_index(path)[source]

从文件加载FAISS索引和元数据。

Parameters:

path (str) – 索引文件目录路径

Returns:

加载成功返回True,失败返回False

Return type:

bool

close()[source]

关闭FAISS存储,释放资源。

get_index_stats()[source]

获取索引统计信息。

Returns:

包含索引统计信息的字典

Return type:

Dict[str, Any]