Configuración de la extensión pgvector en Azure PostgreSQL para su uso con Spring AI
¿Qué es la búsqueda de similitud vectorial?
La búsqueda de similitud de vectores es una técnica que se usa para buscar elementos similares en un conjunto de datos comparando sus representaciones vectoriales. La similitud de vectores se calcula normalmente mediante métricas de distancia, como la distancia euclidiana o similitud cosine. En el contexto de la inteligencia artificial y el aprendizaje automático, las representaciones vectoriales o las incrustaciones son representaciones numéricas de puntos de datos, como palabras, imágenes o consultas de usuario. Estos vectores capturan el significado semántico de los puntos de datos, lo que permite búsquedas de similitud eficaces.
Por ejemplo, en un sistema de respuesta a preguntas, las consultas de usuario se pueden convertir en incrustaciones vectoriales. Estas inserciones se pueden comparar con una base de datos de inserciones precalculadas de indicaciones y respuestas anteriores para encontrar las más similares. Este proceso se conoce como búsqueda de similitud vectorial.
¿Qué es la extensión pgvector?
La pgvector extensión es una extensión para PostgreSQL que agrega compatibilidad con tipos y operaciones de datos vectoriales. Permite almacenar e insertar vectores de consulta directamente dentro de una base de datos postgreSQL. Con pgvector, puede realizar búsquedas de similitud eficaces mediante operaciones vectoriales, por lo que es una opción ideal para las aplicaciones que requieren funcionalidades de búsqueda semántica.
La pgvector extensión incluye las siguientes características clave:
- Compatibilidad con tipos de datos vectoriales.
- Indexación eficaz y consulta de datos vectoriales.
- Integración con las características y extensiones existentes de PostgreSQL.
Extensión pgvector en Azure PostgreSQL
La extensión pgvector agrega una búsqueda de similitud vectorial de código abierto a PostgreSQL.
Para poder habilitar pgvector en la instancia de servidor flexible de Azure Database for PostgreSQL, debe agregarla a la lista de permitidos, tal como se describe en Permitir extensiones. Para determinar si lo agregó correctamente, use el siguiente comando: SHOW azure.extensions;
Importante
La comunidad de PostgreSQL suele hacer referencia a esta extensión como pgvector. Sin embargo, el nombre del archivo binario y la propia extensión es vector, que es el nombre que debe usar en la lista de permitidos y al crearlo en PostgreSQL a través del CREATE EXTENSION comando .
Después de agregar la extensión a la lista de permitidos, instale la extensión mediante el siguiente comando SQL:
CREATE EXTENSION IF NOT EXISTS vector;
Operaciones de pgvector
La pgvector extensión permite una búsqueda de similitud eficaz, como se muestra en el ejemplo siguiente:
SELECT id, prompt, response
FROM chat_history
ORDER BY embedding <-> '[0.1,0.2,...]'::vector
LIMIT 3;
La implementación de pgvector en Spring AI
Spring AI incluye una abstracción de pgvector denominada VectorStore. Esta implementación requiere otras dos extensiones de PostgreSQL: hstore y uuid-ossp.
Al iniciarse, Spring Boot instala las extensiones necesarias y crea la tabla necesaria vector_store con un índice si aún no existe.
Resumen de la unidad
La búsqueda de similitud de vectores y la pgvector extensión proporcionan funcionalidades eficaces para crear aplicaciones con tecnología de inteligencia artificial que requieren funcionalidad de búsqueda semántica. Mediante el uso de estas herramientas en Azure PostgreSQL, puede almacenar, indexar e insertar vectores de consulta de forma eficaz, lo que permite características avanzadas de búsqueda y recuperación en las aplicaciones.
En la unidad siguiente, realizará los pasos necesarios para crear y configurar una base de datos postgreSQL, habilitar la pgvector extensión y crear tablas necesarias para su uso con Spring AI.