PDF Chunking and Embedding

Обзор

Aspose.PDF PDF Chunking and Embedding позволяет разбивать PDF-документы на семантические текстовые фрагменты и генерировать векторные эмбеддинги для использования в конвейерах Retrieval-Augmented Generation (RAG), семантическом поиске и других сценариях на основе ИИ.

API предоставляет две точки входа в виде методов расширения для Document:

Метод Описание
GetChunksAsync Преобразует PDF в Markdown и разбивает его на объекты DocumentChunk.
IngestAsync Полный конвейер: разбивает документ на фрагменты, генерирует эмбеддинги и выполняет upsert записей в векторное хранилище.

Предварительные требования

  • Aspose.PDF for .NET
  • Microsoft.Extensions.AI — для IEmbeddingGenerator<string, Embedding<float>>
  • Microsoft.Extensions.VectorData — для VectorStoreCollection<string, DocumentChunk>
  • Провайдер эмбеддингов (например, OpenAI, Azure OpenAI или любая реализация IEmbeddingGenerator)
  • Векторное хранилище (например, Azure AI Search, Qdrant, in-memory или любая реализация VectorStoreCollection)

Параметры разбивки на фрагменты

Настройте поведение разбивки с помощью ChunkingOptions:

var options = new Aspose.Pdf.AI.ChunkingOptions();

var customOptions = new Aspose.Pdf.AI.ChunkingOptions
{
    MaxChunkSize = 512,
    OverlapSize  = 50
};
Свойство По умолчанию Диапазон Описание
MaxChunkSize 1000 50–10 000 Максимальное количество токенов в фрагменте.
OverlapSize 100 0–(MaxChunkSize−1) Количество перекрывающихся токенов между последовательными фрагментами, сохраняющих контекст на границах.

Получение фрагментов

Используйте GetChunksAsync, когда вам нужны только текстовые фрагменты — например, для их проверки, постобработки или передачи в пользовательский конвейер эмбеддингов.

Разбивка на фрагменты, создание эмбеддингов и загрузка в векторное хранилище

Используйте IngestAsync для запуска полного конвейера в одном вызове: документ разбивается на фрагменты, для каждого фрагмента генерируются эмбеддинги, и все записи добавляются в векторное хранилище.

Поскольку API построен на абстракциях Microsoft.Extensions.AI, любой провайдер эмбеддингов и любое векторное хранилище могут использоваться взаимозаменяемо.

OpenAI

Справочник DocumentChunk

Каждый DocumentChunk, возвращаемый GetChunksAsync или сохраняемый IngestAsync, имеет следующие свойства:

Свойство Тип Описание
Id string Уникальный идентификатор в формате {sourceId}_chunk_{index}.
Index int Позиция данного фрагмента в документе, начиная с нуля.
Content string Текстовое содержимое фрагмента. Хранится как данные полнотекстового поиска в векторном хранилище.
Context string Структурный контекст, извлечённый из документа (например, путь заголовка). Помогает конвейерам RAG понять, откуда в документе взят данный фрагмент.
Embedding ReadOnlyMemory<float>? Векторный эмбеддинг, заполняемый IngestAsync. null при использовании только GetChunksAsync.
Metadata IDictionary<string, string> Расширяемое хранилище пар ключ-значение для пользовательских метаданных.

Схема векторного хранилища

Используйте DocumentChunk.GetVectorDefinition(dimensions) для получения схемы коллекции, соответствующей размеру выходных данных модели эмбеддингов:

var definition = Aspose.Pdf.AI.DocumentChunk.GetVectorDefinition(dimensions: 1536);