langchain_core.indexing.api.index

langchain_core.indexing.api.index(docs_source: Union[BaseLoader, Iterable[Document]], record_manager: RecordManager, vector_store: VectorStore, *, batch_size: int = 100, cleanup: Optional[Literal['incremental', 'full', None]] = None, source_id_key: Optional[Union[str, Callable[[Document], str]]] = None, cleanup_batch_size: int = 1000, force_update: bool = False) IndexingResult[source]

将加载器中的数据索引到向量存储中。

索引功能使用管理器来跟踪哪些文档在向量存储中。

这使我们能够跟踪哪些文档已更新,哪些文档已删除,以及哪些文档应跳过。

目前,文档使用其哈希值进行索引,用户

无法指定文档的uid。

重要提示

  • 如果 auto_cleanup 设置为 True,则加载器应返回整个数据集,而不仅仅是数据集的子集。否则,auto_cleanup 将删除不应删除的文档。

  • 在增量模式下,如果与特定源 ID 关联的文档出现在不同的批次中,则索引 API 将执行一些冗余工作。 这仍然会导致索引的正确最终状态,但不幸的是,效率不会达到 100%。 例如,如果给定文档被拆分为 15 个块,并且我们使用 5 的批次大小对其进行索引,我们将有 3 个批次都具有相同的源 ID。 一般来说,为了避免做过多的冗余工作,请选择尽可能大的批次大小。

参数
  • docs_source (Union[BaseLoader, Iterable[Document]]) – 要索引的数据加载器或文档的可迭代对象。

  • record_manager (RecordManager) – 时间戳集合,用于跟踪哪些文档已更新。

  • vector_store (VectorStore) – 要将文档索引到其中的向量存储。

  • batch_size (int) – 索引时使用的批次大小。 默认为 100。

  • cleanup (Optional[Literal['incremental', 'full', None]]) –

    如何处理文档的清理。 默认为 None。 - 增量:清理所有尚未更新且

    与索引期间看到的源 ID 关联的文档。 清理在索引期间持续进行,有助于最大限度地降低用户看到重复内容的可能性。

    • 完全:删除加载器未返回的所有文档

      在此次索引运行期间。 清理在所有文档索引完成后运行。 这意味着用户在索引期间可能会看到重复的内容。

    • 无:不删除任何文档。

  • source_id_key (Optional[Union[str, Callable[[Document], str]]]) – 可选键,用于帮助识别文档的原始来源。 默认为 None。

  • cleanup_batch_size (int) – 清理文档时使用的批次大小。 默认为 1_000。

  • force_update (bool) – 即使文档已存在于记录管理器中,也强制更新文档。 如果您正在使用更新的嵌入重新索引,这将非常有用。 默认为 False。

返回

索引结果,其中包含有关添加、更新、删除或跳过多少文档的信息。

引发
  • ValueError – 如果清理模式不是 ‘incremental’、‘full’ 或 None 之一

  • ValueError – 如果清理模式为增量,并且 source_id_key 为 None。

  • ValueError – 如果 vectorstore 没有所需的 “delete” 和 “add_documents” 方法。

  • ValueError – 如果 source_id_key 不是 None,但不是字符串或可调用对象。

返回类型

IndexingResult

使用 index 的示例