索引#
- langchain_core.indexing.api.index(docs_source: BaseLoader | Iterable[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]) – 数据加载器或文档的可迭代对象,用于索引。
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) –
- 传递给 add_documents 方法的额外关键字参数
VectorStore 或 DocumentIndex 的 upsert 方法。例如,您可以使用此参数 指定自定义的 vector_field: upsert_kwargs={“vector_field”: “embedding”}
在版本 0.3.10 中添加。
- Returns:
索引结果,包含有关添加、更新、删除或跳过的文档数量的信息。
- Raises:
ValueError – 如果清理模式不是‘incremental’、‘full’或None
ValueError – 如果清理模式为增量且source_id_key为None。
ValueError – 如果vectorstore没有所需的“delete”和“add_documents”方法。
ValueError – 如果 source_id_key 不是 None,但不是字符串或可调用对象。
- Return type:
使用索引的示例