Qué es un vector
Un vector es un objeto que representa un elemento del mundo real como un matriz de números flotantes.
Cada elemento del mundo real se representa en formato vectorial (como una matriz) y tiene muchas dimensiones (atributos) asociadas al objeto en función de sus características.
Por ejemplo, si queremos representar Colores en formato Vectorial, podemos crear un array de valores de atributos. Ejemplo ["R", "G", "B"]
Cada color de una imagen RGB está representado por tres valores: la cantidad de luz roja, verde y azul presente. Estos valores suelen oscilar entre 0 y 255, indicando la intensidad de cada componente de color.
Rojo puro= [ "255", "0", "0"]
Dónde:
-
- R representa la intensidad del rojo (en este caso, intensidad máxima, 255),
- G representa la intensidad del verde (en este caso, 0, por lo que no hay verde),
- B representa la intensidad del azul (en este caso, 0, por lo que no hay azul).
Del mismo modo, puede representar cualquier color utilizando este formato vectorial RGB, con valores que van de 0 a 255 para cada canal de color.
Si queremos encontrar coincidencias cercanas para el color rojo, podemos averiguarlo basándonos en el primer valor del atributo del color.
Los objetos del mundo real pueden tener muchos otros atributos que tienen que representar y, por lo tanto, un Vector que representa un objeto del mundo real está representado por una matriz más grande de 512, 1028, 1536 o 2048 valores de atributos.
¿Qué es la búsqueda vectorial?
La búsqueda vectorial es un método de búsqueda de elementos basado en su representación vectorial. En la búsqueda vectorial, cada elemento se representa en un espacio multidimensional en el que cada dimensión representa el valor del atributo del elemento.
Encontrará más información en:
Casos de uso en el sector
La búsqueda vectorial puede utilizarse en diversos sectores y para distintos casos de uso:
-
- Generación de contenidos
- Detección de anomalías
- Búsqueda híbrida
- Chatbots con IA.
¿Búsqueda vectorial frente a búsqueda de texto completo?
Tanto la búsqueda vectorial como la búsqueda de texto completo son métodos utilizados para buscar en colecciones de datos, pero funcionan de forma diferente y se adaptan a distintos tipos de datos y casos de uso.
Búsqueda de texto completo: es una técnica utilizada en la recuperación de información para buscar y analizar el contenido textual de documentos o bases de datos. A diferencia de los métodos de búsqueda tradicionales, que se basan en frases exactas o palabras clave, los motores de búsqueda de texto completo analizan el contenido de los documentos o registros para realizar búsquedas basadas en el significado y el contexto de las palabras..
Área de comparación | Búsqueda de texto completo | Búsqueda vectorial | |
1 | Representación de datos | Los datos se representan como documentos de texto o cadenas | Los datos se representan como vectores en un espacio multidimensional |
2 | Criterios de concordancia | Coincidencia exacta o difusa | Partido vecino más próximo |
3 | Buscar en | Búsqueda o comparación textual | Búsqueda contextual o comparación basada en atributos del objeto. |
4 | Caso práctico | Búsqueda en un documento, página web, contenido de correo electrónico, etc. | Búsqueda por audio, vídeo, imagen, texto, etc. |
¿Por qué Couchbase para la búsqueda vectorial?
-
- Vector en todos nuestros productos: La primera del sector en anunciar la compatibilidad con las tres implantaciones: en la nube, local y móvil.
- Amplias capacidades: Caché integrada, búsqueda de texto completo, búsqueda analítica, series temporales, clave-valor, eventos y otras funciones junto con la búsqueda vectorial en una única plataforma.
- Integración de los ecosistemas: Cadena LangChain y LlamaIndex integración.
- Velocidad y flexibilidad demostradas: Arquitectura en memoria, formato json flexible e indexación potente.
Encontrará más información en nuestro anuncio de lanzamiento de la búsqueda vectorial.
Requisitos previos
- Couchbase Capella o Couchbase Server 7.6 EE
- Ya ha creado una base de datos
- Datos de la muestra:
- Descargar archivo datos_colores_2vectores.zip
- Para este ejemplo, utilizaremos el rgb.json archivo
- Archivo de índice: color-index.json
- color-index.json:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124{"tipo": "fulltext-index","nombre": "color-index","sourceType": "gocbcore","sourceName": "vector-muestra","sourceUUID": "789365cccdf940ee2814a5dd2752040a","planParams": {"maxPartitionsPerPIndex": 512,"indexPartitions": 1},"params": {"doc_config": {"docid_prefix_delim": "","docid_regexp": "","mode": "ámbito.colección.tipo_campo","tipo_campo": "tipo"},"mapeo": {"análisis": {},"default_analyzer": "estándar","default_datetime_parser": "dateTimeOptional","default_field": "_todos","default_mapping": {"dinámico": falso,"activado": falso},"tipo_por_defecto": "_por defecto","docvalues_dynamic": falso,"index_dynamic": falso,"store_dynamic": falso,"tipo_campo": "_tipo","tipos": {"color.rgb": {"dinámico": falso,"activado": verdadero,"propiedades": {"brillo": {"dinámico": falso,"activado": verdadero,"campos": [{"índice": verdadero,"nombre": "brillo","tienda": verdadero,"tipo": "número"}]},"color": {"dinámico": falso,"activado": verdadero,"campos": [{"analizador": "es","índice": verdadero,"nombre": "color","tienda": verdadero,"tipo": "texto"}]},"colorvect_dot": {"dinámico": falso,"activado": verdadero,"campos": [{"dims": 3,"índice": verdadero,"nombre": "colorvect_dot","similitud": "punto_producto","tipo": "vector"}]},"colorvect_l2": {"dinámico": falso,"activado": verdadero,"campos": [{"dims": 3,"índice": verdadero,"nombre": "colorvect_l2","similitud": "l2_norm","tipo": "vector"}]},"descripción": {"dinámico": falso,"activado": verdadero,"campos": [{"analizador": "es","índice": verdadero,"nombre": "descripción","tienda": verdadero,"tipo": "texto"}]},"incrustar_vector_punto": {"dinámico": falso,"activado": verdadero,"campos": [{"dims": 1536,"índice": verdadero,"nombre": "incrustar_vector_punto","similitud": "punto_producto","tipo": "vector"}]}}}}},"tienda": {"tipo de índice": "chamuscar","segmentVersion": 16}},"sourceParams": {}}
- color-index.json:
- Ejemplo de definición de búsqueda:
{"fields": ["*"], "query": { "match_none": "" }, "knn": [ { "k": 2, "field": "colorvect_l2", "vector": [ 0, 0, 128 ] } ] }
Pasos
Crear datos de muestra
Abra Capella UI, vaya a Base de datose inicie la importación de datos mediante la importación desde el navegador utilizando las herramientas de datos:
-
- Utilice el archivo de datos de ejemplo rgb.json proporcionado en los requisitos previos.
- Elija una opción cargar desde el navegador.
- Selecciona el archivo: rgb.json
- Especificar nuevo cubo con nombre: vector-muestra
- Especificar nuevo ámbito con nombre: color
- Especificar nueva colección con nombre: rgb
- En el paso 3, previsualizar tus datos,
Elija cómo Capella crea identificadores para cada uno de sus documentos. Seleccione la opción como campo y especifique el campo: Id como se muestra en la siguiente captura de pantalla. - Haz clic en Importar.
Crear índice de búsqueda vectorial
En Opciones de búsqueda en Herramientas de datos:
-
- Crear índice de búsqueda
- Seleccione modo avanzado
- Haga clic en Índice Definición en la parte derecha de la interfaz de usuario
- Seleccionar opción Importar desde archivo
- Elegir archivo color-index.json especificado en los requisitos previos
- Especifique el nombre del índice como: color-index.json
- Elige cubo: vector-muestra
- El ámbito se rellenará automáticamente como color
- Haga clic en Crear índice
- Crear índice de búsqueda
Realizar una búsqueda vectorial
Seleccione Buscar en en el índice de color fila (botón cerca del extremo derecho)
Pegue el texto de búsqueda del paso previo en la ventana Buscar.
Haga clic en Buscar en para obtener un resultado (se muestra en la ventana debajo del texto de búsqueda).
Conclusión
En este post, hemos repasado los conceptos básicos de lo que es la búsqueda vectorial y cómo empezar rápidamente con la búsqueda vectorial con Couchbase.
Después de ejecutar una búsqueda vectorial básica, uno puede combinar fácilmente consultas SQL con búsqueda vectorial en Couchbase, ayudando a consolidar su pila de bases de datos y evitar escribir múltiples consultas para obtener un único resultado significativo para una aplicación.
Empezar gratis
-
- Comienza tu Cuenta de prueba de 30 días para Capella para realizar su primer experimento hoy mismo.
Referencias