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:
Количество перекрывающихся токенов между последовательными фрагментами, сохраняющих контекст на границах.
Получение фрагментов
Используйте GetChunksAsync, когда вам нужны только текстовые фрагменты — например, для их проверки, постобработки или передачи в пользовательский конвейер эмбеддингов.
Разбивка на фрагменты, создание эмбеддингов и загрузка в векторное хранилище
Используйте IngestAsync для запуска полного конвейера в одном вызове: документ разбивается на фрагменты, для каждого фрагмента генерируются эмбеддинги, и все записи добавляются в векторное хранилище.
Поскольку API построен на абстракциях Microsoft.Extensions.AI, любой провайдер эмбеддингов и любое векторное хранилище могут использоваться взаимозаменяемо.
OpenAI
Azure OpenAI и Azure AI Search
Справочник 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) для получения схемы коллекции, соответствующей размеру выходных данных модели эмбеддингов: