DEV Community

Cover image for Construyendo un Motor de Búsqueda Multimodal con Amazon Titan Embeddings, Aurora Serveless PostgreSQL y LangChain
Elizabeth Fuentes L for AWS Español

Posted on

Construyendo un Motor de Búsqueda Multimodal con Amazon Titan Embeddings, Aurora Serveless PostgreSQL y LangChain

🇻🇪🇨🇱 Dev.to Linkedin GitHub Twitter Instagram Youtube
Linktr

Repo: https://github.com/build-on-aws/langchain-embeddings

En esta serie de dos partes, te guiaré a través de la construcción de un motor de búsqueda que entiende tanto texto como imágenes utilizando Amazon Bedrock e implementa almacenamiento vectorial en Amazon Aurora PostgreSQL con la extensión pgvector.

En la primera parte de esta serie, profundizarás en los componentes principales de nuestro motor de búsqueda multimodal. Usando un entorno de Jupyter Notebook, explorarás cómo:

  • Generar embeddings avanzados de texto e imagen utilizando los modelos de Amazon Titan Embeddings.
  • Aprovechar LangChain para segmentar texto en fragmentos semánticos significativos.
  • Crear y consultar bases de datos vectoriales FAISS locales para un almacenamiento y recuperación eficientes.
  • Desarrollar una potente aplicación de búsqueda de imágenes utilizando Titan Multimodal Embeddings.
  • Implementar almacenamiento vectorial en Amazon Aurora PostgreSQL con la extensión pgvector.

Building a Multimodal Search Engine with Amazon Titan Embeddings, Aurora Serveless PostgreSQL and LangChain

✅ AWS Level: Advanced - 300

Pre-requisitos:

  • Foundational knowledge of Python
  • AWS Account
  • Enable model Access for the following models:
  • Amazon Titan Embeddings V2
  • Anthropic Claude 3 models (Haiku or Sonnet).
  • Set up the AWS Command Line Interface (CLI)
  • Install boto3: with pip install boto3.
  • Configure AWS credentials
  • Install Langchain: with pip install langchain.
  • Optional: Bootstrap your account/region if this is your first CDK Project
  • Read about AWS CDK "Get started with Python"

Costo de la aplicación:

Aquí tienes la traducción al español:

🚀 ¡Vamos a construir!

Sigue estos pasos:

Paso 1: Configuración de la APP

✅ Clona el repositorio

git clone https://github.com/build-on-aws/langchain-embeddings
Enter fullscreen mode Exit fullscreen mode

✅ Ve a:

cd notebooks
Enter fullscreen mode Exit fullscreen mode

✅ Comienza a revisar los notebooks en el siguiente orden:

Búsqueda semántica con LangChain, Amazon Titan Embeddings y FAISS:

01_build_pdf_vector_db.ipynb

Jupyter notebook para cargar documentos desde PDFs, extraer y dividir texto en fragmentos semánticamente significativos usando LangChain, generar embeddings de texto de esos fragmentos usando modelos Amazon Titan Embeddings G1 - Text, y almacenar los embeddings en una base de datos vectorial FAISS para su recuperación.

Construyendo una aplicación de búsqueda de imágenes multimodal con Titan Embeddings y LangChain:

02_build_images_vector_db.ipynb

Este notebook demuestra cómo combinar Titan Multimodal Embeddings, LangChain y FAISS para construir una potente aplicación de búsqueda de imágenes. Los embeddings de Titan permiten representar imágenes y texto en un espacio vectorial denso común, permitiendo consultas en lenguaje natural de imágenes. FAISS proporciona una forma rápida y escalable de indexar y buscar esos vectores. Y LangChain ofrece abstracciones para conectar todo y mostrar resultados de imágenes relevantes basados en la consulta del usuario.

Esta aplicación de búsqueda de imágenes es un componente clave de nuestro motor de búsqueda multimodal. Demuestra cómo puedes integrar consultas basadas en texto con recuperación de imágenes, permitiendo a los usuarios encontrar contenido visual relevante usando lenguaje natural. Esta funcionalidad es crucial para crear una experiencia de búsqueda multimodal fluida, donde los usuarios pueden navegar fácilmente entre información textual y visual.

Siguiendo los pasos descritos, podrás preprocesar imágenes, generar embeddings, cargarlos en FAISS, y escribir una aplicación simple que reciba una consulta en lenguaje natural, busque en el índice FAISS y devuelva las imágenes más semánticamente relevantes. Es un gran ejemplo del poder de combinar tecnologías modernas de IA para construir aplicaciones.

Potenciando la búsqueda de similitud vectorial con Amazon Aurora y pgvector:

03_build_pgvector_db.ipynb

En este Jupyter Notebook, explorarás cómo almacenar embeddings vectoriales en una base de datos vectorial usando Amazon Aurora y la extensión pgvector. Este enfoque es particularmente útil para aplicaciones que requieren búsquedas de similitud eficientes en datos de alta dimensionalidad, como procesamiento de lenguaje natural, reconocimiento de imágenes y sistemas de recomendación.

🧹 ¡Limpia la casa!:

Si terminas de probar y quieres limpiar la aplicación, solo tienes que seguir estos dos pasos:

  1. Elimina los archivos del bucket de Amazon S3 creado en el despliegue.
  2. Eliminar clusters de DB Aurora e instancias de DB

Conclusión

En esta publicación, demostré cómo construir un potente motor de búsqueda multimodal usando Amazon Titan Embeddings y LangChain en un entorno Jupyter Notebook. Exploraste componentes clave como la generación de embeddings, segmentación de texto, almacenamiento vectorial y capacidades de búsqueda de imágenes.

Esta base establece el escenario para la Parte 2 de nuestra serie, donde transformarás esta solución en una arquitectura serverless escalable usando AWS CDK y funciones Lambda. Integrarás con Amazon S3 y Aurora PostgreSQL para crear un motor de búsqueda multimodal completamente funcional y listo para producción.

¡Mantente atento a la próxima entrega para aprender cómo desplegar y escalar tus capacidades de búsqueda a nuevas alturas! ¡Feliz codificación y que tus búsquedas siempre encuentren lo que estás buscando! 😉

Gracias,
Eli

🇻🇪🇨🇱 Dev.to Linkedin GitHub Twitter Instagram Youtube
Linktr

Top comments (0)