Utilice Object Storage Service (OSS) para compilar el índice completo a partir de archivos HA3 o JSON almacenados en un bucket y, posteriormente, use la API para realizar actualizaciones incrementales una vez que el índice esté activo.
|
Método |
Función |
Cuándo utilizarlo |
|
Importación completa desde OSS |
Carga todos los registros simultáneamente durante la creación del índice |
Compilación inicial o reconstrucción total del índice |
|
Actualización incremental mediante API |
Agrega, modifica o elimina registros después de que el índice está activo |
Cambios continuos en los datos |
OSS y su instancia de OpenSearch Vector Search Edition deben encontrarse en la misma región. Si las regiones no coinciden, se producirá un error en la conexión al origen de datos.
La configuración consta de dos partes: preparar OSS y luego vincularlo como origen de datos al crear una tabla.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una cuenta de Alibaba Cloud con OSS activado
Una instancia de Vector Search Edition adquirida (consulte Purchase a Vector Search Edition instance)
Archivos de datos codificados en UTF-8, con formato HA3 o JSON
Paso 1: Preparar OSS
Activar OSS
Active OSS en la misma región donde se encuentra su instancia de OpenSearch.
Crear un bucket
-
Vaya a OSS Management Console > Buckets > Create Bucket.
En el panel de navegación izquierdo de OSS Management Console, haga clic en Buckets y luego en Create Bucket.
-
Una vez creado el bucket, agregue una etiqueta de OpenSearch: Vaya a Bucket Settings > Bucket Tagging > Create Tag.
Establezca tanto la clave de la etiqueta (Key) como su valor (Value) en
opensearch.
Preparar los archivos de datos
Los archivos deben cumplir con los siguientes requisitos antes de cargarlos:
|
Requisito |
Detalle |
|
Codificación |
UTF-8 |
|
Formato |
HA3 o JSON |
|
Ubicación |
Deben estar dentro de una carpeta, no en la raíz del bucket |
Formato JSON
Cada línea corresponde a un documento JSON. No se admite JSON multilínea.
|
Regla |
Detalle |
|
Un registro por línea |
Cada objeto JSON debe caber en una sola línea |
|
Separador de líneas |
|
|
Sin archivos mixtos |
El directorio debe contener únicamente archivos de datos JSON |
|
Tipos de valores |
Todos los valores JSON son cadenas; el esquema los convierte a los tipos correctos durante la compilación del índice |
Ejemplo:
{"field_double": ["100.0", "221.123", "500.3333333"], "field_int32": ["100", "200", "300"], "title": "Huawei Mate 9 Kirin 960 chip Leica dual camera", "color": "Red", "empty_int32": "", "price": "3599", "CMD": "add", "nid": "1", "gather_cn_str": "", "desc": ["str1", "str2", "str3"], "brand": "Huawei", "size": "5.9","__subdocs__":[{"sub_pk":"100","sub_field1":"200","sub_field2":["100","200","300"]},{"sub_pk":"200","sub_field1":"200","sub_field2":["100","200","300"]}]}
{"field_double": ["100.0", "221.123", "500.3333333", "100.0", "221.123", "500.3333333"], "field_int32": ["100", "200", "300", "100", "200", "300"], "title": "Huawei/Huawei P10 Plus full network phone", "color": "Blue", "empty_int32": "", "price": "4388", "CMD": "add", "nid": "2", "gather_cn_str": "colorBlue", "desc": ["str1", "str2", "str3", "str1", "str2", "str3"], "brand": "Huawei", "size": "5.5","__subdocs__":[{"sub_pk":"100","sub_field1":"200","sub_field2":["100","200","300"]},{"sub_pk":"200","sub_field1":"200","sub_field2":["100","200","300"]}]}
Formato HA3
Los archivos HA3 utilizan separadores binarios. Cada archivo contiene una secuencia de comandos add y delete.
Separadores de archivo
|
Codificación C++ |
Hexadecimal ASCII |
Descripción |
Visualización (emacs/vi) |
Entrada en emacs |
Entrada en vi |
|
|
1F0A |
Separador clave-valor |
|
C-q C-7 |
C-v C-7 |
|
|
1E0A |
Separador de comandos |
|
C-q C-6 |
C-v C-6 |
|
|
1D |
Separador de valores múltiples |
|
C-q C-5 |
C-v C-5 |
|
|
1C |
Indicador de peso de sección |
|
C-q C-4 |
C-v C-4 |
|
|
1D |
Separador de sección |
|
C-q C-5 |
C-v C-5 |
|
|
03 |
Separador de campo de subdocumento |
|
C-q C-c |
C-v C-c |
Formato de comandos
-
Comando Add: La primera línea debe ser
CMD=add. Incluya todos los campos definidos en el esquema, en cualquier orden.CMD=add^_ PK=12345321^_ url=http://www.aliyun.com/index.html^_ title=Alibaba Cloud Computing Co., Ltd.^_ body=xxxxxx xxx^_ time=3123423421^_ multi_value_field=1234^]324^]342^_ bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_ ^^ -
Comando Delete: La primera línea debe ser
CMD=delete. Incluya el campo de clave primaria y el campo hash de partición. Si ambos corresponden al mismo campo, inclúyalo solo una vez.CMD=delete^_ PK=12345321^_ ^^
Cargar archivos al bucket
Coloque sus archivos de datos en una carpeta dentro del bucket, no en el directorio raíz. La estructura del bucket debe tener el siguiente aspecto:
<your-bucket-name>/
└── <your-data-folder>/
├── data_file_1.json
├── data_file_2.json
└── ...
Para cargar los archivos:
En OSS Management Console, abra su bucket.
En el panel de navegación izquierdo, vaya a Object Management > Objects.
-
Haga clic en Upload Object, seleccione sus archivos y confirme.
Una vez completada la carga, el estado del archivo en el panel Task List mostrará Upload Successful.
Paso 2: Agregar un origen de datos OSS + API
Configurar la información básica de la tabla
En la Instance List, localice su instancia de Vector Search Edition y haga clic en Manage en la columna Actions.
En el panel de navegación izquierdo, vaya a Table Management > Add Table.
-
Complete la información básica de la tabla y haga clic en Next.
Campo
Descripción
Table Name
Nombre personalizado para esta tabla
Number of Data Shards
Entero positivo, máximo 256. Un mayor número de shards mejora la velocidad de compilación completa y el rendimiento de consultas individuales.
Number of Data Update Resources
Recursos utilizados para actualizaciones incrementales de datos. Cada índice incluye de forma predeterminada dos recursos de actualización gratuitos de 4 núcleos y 8 GB. Los recursos adicionales generan costos de facturación. Consulte Vector Search Edition billing.
Scenario Template
Elija una opción: General Template, Vector: Image Search Template o Vector: Text Semantic Search Template
Después de seleccionar la plantilla Vector: Image Search, elija un método de recuperación: Dense Vector Retrieval o Dense & Sparse Vector Hybrid Retrieval.
Configurar la sincronización de datos
Para Full Data Source, seleccione Object Storage Service (OSS) + API.
-
Complete los detalles de conexión de OSS y haga clic en Data Source Verification.
Campo
Descripción
OSS Path
Ruta a la carpeta que contiene sus archivos de datos. Debe comenzar con
/. No puede contener?,=ni&. Los archivos deben estar en una carpeta; no se admite el directorio raíz.OSS Bucket
Nombre del bucket de OSS
Data Format
Seleccione HA3 o JSON según el formato de sus archivos cargados
-
Una vez superada la verificación, haga clic en Next.
Si la verificación falla, compruebe que la ruta de OSS apunte a una carpeta (no a la raíz), que el nombre del bucket sea correcto, que el formato de datos coincida con sus archivos y que OSS se encuentre en la misma región que su instancia de OpenSearch.
Configurar campos
Vector Search Edition rellena previamente los campos basándose en su plantilla de escenario e importa las definiciones de campos desde el origen de datos.
-
Revise los campos predefinidos. Para la Image Search Template, los campos predeterminados son:
Campo
Descripción
idClave primaria
source_imageImagen de origen
namespaceEspacio de nombres
source_image_vectorVector de imagen de origen
-
Configure los tipos y propiedades de los campos:
Clave primaria (obligatorio): Establezca Type en un tipo entero o
STRINGy seleccione la opción Primary Key.Campo vectorial (obligatorio): Establezca Type en
FLOATy seleccione la casilla Vector Field. Los campos vectoriales son de tipoFLOATcon valores múltiples de forma predeterminada, y usan la coma como delimitador. Introduzca un delimitador personalizado si es necesario.Default values: Cuando un campo falta o está vacío en los datos, el sistema asigna un valor predeterminado:
0para tipos numéricos y una cadena vacía para tiposSTRING. Personalice los valores predeterminados según sus necesidades.
-
Para los campos que requieren preprocesamiento (como
source_image), haga clic en Configure en la columna Data Preprocessing. En la configuración de preprocesamiento:Data Source: Seleccione OSS Object Storage para importar imágenes directamente desde OSS (proporcione la ruta de OSS), o bien Base64 Encoding para suministrar datos de imagen codificados mediante la API.
-
Pre-processing Template: Seleccione la plantilla que corresponda a su tipo de datos. Para imágenes, las plantillas disponibles son:
Image Vectorization
OCR Image Text Recognition
OCR Image Text Recognition + Image Vectorization
-
Service List: Tras seleccionar una plantilla, revise los modelos utilizados. Puede elegir entre:
Built-in Models: Uso gratuito, con una selección más reducida de tipos de modelos.
Valores de configuración para este ejemplo:
OSS Endpoint:
oss-cn-shenzhen-internal.aliyuncs.comOSS Bucket:
zhyq-szEn la lista de servicios, seleccione el modelo Built-in General Image Embedding Model - 512D CLIP, con el campo de salida establecido en
source_image_vector.
Haga clic en OK para confirmar.
Haga clic en Next.
Configurar el esquema del índice
-
Defina los campos incluidos y los parámetros del índice, y luego haga clic en Next.
Parámetro
Descripción
Included Fields
La clave primaria y el campo vectorial son obligatorios. El campo de espacio de nombres es opcional.
Vector Dimension
Cantidad de dimensiones de sus embeddings vectoriales
Real-time Indexing
Habilita o deshabilita las actualizaciones del índice en tiempo real
Distance Type
Métrica de distancia para la búsqueda por similitud vectorial
Vector Index Algorithm
Algoritmo utilizado para compilar el índice vectorial
Ejemplo de configuración de índice vectorial:
Nombre del índice:
source_image_vectorRecuperación híbrida: Disabled
Clave primaria:
id, Campo vectorial:source_image_vectorDimensiones:
512Tipo de distancia: SquaredEuclidean
Índice en tiempo real:
trueAlgoritmo: Qc
-
Haga clic en More Advanced Configuration para desplegar los campos de parámetros avanzados:
Real-time Index Parameters
Index Build Parameters
Index Search Parameters
Linear Build Threshold
Minimum Recall Candidate Set Size
Recall Metric Reporting
Ignore Problematic Vector Data
Para consultar la referencia completa de parámetros, vea General vector index configuration.
Confirmar y verificar
En la página Confirm Creation, revise su configuración y haga clic en Confirm.
Regrese a la Instance List. El estado de la instancia cambiará a Normal en aproximadamente 2 minutos.
Cuando el estado sea Normal, utilice Actions > Query Test para ejecutar consultas de prueba y comprobar que el índice funciona correctamente.