AWS Lakechain#

Проект Lakechain (Project Lakechain) - фреймворк, основанный на инструменте разработки облачных приложений от Amazon Web Services (AWS Cloud Development Kit, CDK). Он позволяет описывать и развертывать масштабируемые конвейеры обработки документов на платформе AWS с использованием подхода «инфраструктура-как-код». Проект подчеркивает модульность и расширяемость конвейеров, предоставляя более 60 готовых к использованию компонентов для прототипирования сложных конвейеров обработки данных, способных обрабатывать миллионы документов.

Соединитель хранилища Vector DB, доступный в Lakechain, позволяет загружать векторные вложения, созданные другими промежуточными программами, в коллекцию Vector DB.

Можно найти пример полного использования коннектора Vector DB Lakechain здесь.

Чтобы использовать соединитель хранилища Vector DB, импортируете его в стек SDK и подключаете к источнику данных, который предоставляет вложения документов.

Необходимо указать ключ API Vector DB соединителю, указав ссылку на секрет из сервиса AWS Secrets Manager, содержащий этот ключ.

import { QdrantStorageConnector } from '@project-lakechain/qdrant-storage-connector';
import { CacheStorage } from '@project-lakechain/core';

class Stack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string) {
    const cache = new CacheStorage(this, 'Cache');

    const qdrantApiKey = secrets.Secret.fromSecretNameV2(
      this,
      'QdrantApiKey',
      process.env.QDRANT_API_KEY_SECRET_NAME as string
    );

    const connector = new QdrantStorageConnector.Builder()
      .withScope(this)
      .withIdentifier('QdrantStorageConnector')
      .withCacheStorage(cache)
      .withSource(source) // Specify a data source
      .withApiKey(qdrantApiKey)
      .withCollectionName('{collection_name}')
      .withUrl('https://xyz-example.eu-central.aws.cloud.qdrant.io:6333')
      .build();
  }
}

Если обрабатываемый документ является текстовым документом, можно выбрать хранение текста документа в полезной нагрузке Vector DB. Для этого можно воспользоваться опциями withStoreText и withTextKey. Если документ не является текстом, эта опция игнорируется.

const connector = new QdrantStorageConnector.Builder()
  .withScope(this)
  .withIdentifier('QdrantStorageConnector')
  .withCacheStorage(cache)
  .withSource(source)
  .withApiKey(qdrantApiKey)
  .withCollectionName('{collection_name}')
  .withStoreText(true)
  .withTextKey('my-content')
  .withUrl('https://xyz-example.eu-central.aws.cloud.qdrant.io:6333')
  .build();

Так как Vector DB поддерживает несколько векторов на одну точку, можно использовать опцию withVectorName для указания одного из них. По умолчанию соединитель использует неназванный (по умолчанию) вектор.

const connector = new QdrantStorageConnector.Builder()
      .withScope(this)
      .withIdentifier('QdrantStorageConnector')
      .withCacheStorage(cache)
      .withSource(source)
      .withApiKey(qdrantApiKey)
      .withCollectionName('collection_name')
      .withVectorName('my-vector-name')
      .withUrl('https://xyz-example.eu-central.aws.cloud.qdrant.io:6333')
      .build();

Дополнительная документация#