aindex#

async langchain_core.indexing.api.aindex(docs_source: BaseLoader | Iterable[Document] | AsyncIterator[Document], record_manager: RecordManager, vector_store: VectorStore | DocumentIndex, *, batch_size: int = 100, cleanup: Literal['incremental', 'full', 'scoped_full', None] = None, source_id_key: str | Callable[[Document], str] | None = None, cleanup_batch_size: int = 1000, force_update: bool = False, upsert_kwargs: dict[str, Any] | None = None) IndexingResult[source]#

从加载器异步索引数据到向量存储中。

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

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

For the time being, documents are indexed using their hashes, and users

无法指定文档的uid。

重要

  • 在完整模式下,加载器应返回整个数据集,而不仅仅是数据集的一个子集。否则,auto_cleanup 将删除它不应该删除的文档。

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

  • 如果确定适当的批量大小具有挑战性,或者您的数据加载器无法一次性返回整个数据集,则scoped_full模式是合适的。此模式会在内存中跟踪源ID,这对于大多数用例来说应该没问题。如果您的数据集很大(超过1000万文档),无论采用何种模式,您都可能需要并行化索引过程。

Parameters:
  • docs_source (BaseLoader | Iterable[Document] | AsyncIterator[Document]) – 数据加载器或文档的可迭代对象,用于索引。

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

  • vector_store (VectorStore | DocumentIndex) – 用于索引文档的VectorStore或DocumentIndex。

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

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

    如何处理文档的清理。默认值为 None。 - incremental: 清理所有未更新的文档,并且

    与在索引期间看到的源ID相关联的文档。 清理在索引期间持续进行,有助于减少用户看到重复内容的可能性。

    • full: 删除所有未被加载器返回的文档。

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

    • scoped_full: 类似于 Full,但仅删除所有未更新的文档

      并且与在索引期间看到的源ID相关联的文档。

    • None: 不删除任何文档。

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

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

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

  • upsert_kwargs (dict[str, Any] | None) –

    传递给aadd_documents方法的额外关键字参数

    VectorStore的aadd_documents方法或DocumentIndex的aupsert方法。例如,您可以使用此参数 指定自定义的vector_field: upsert_kwargs={“vector_field”: “embedding”}

    在版本0.3.10中添加。

Returns:

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

Raises:
  • ValueError – 如果清理模式不是‘incremental’、‘full’或None

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

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

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

Return type:

IndexingResult