0:007:20

Recursos

Resumen

La búsqueda vectorial con embeddings te permite explorar tus propios datos encontrando textos similares sin que las palabras coincidan exactamente. En esta práctica usamos el modelo ADA de Azure OpenAI Service para convertir textos en representaciones vectoriales y comparar similitudes. Es ideal para quien trabaja con consultas en lenguaje natural sobre bases de conocimiento propias.

Por qué usar búsqueda vectorial sobre tus propios datos

Cuando intentas consultar tus propios contenidos, casi nunca tienes claro cuál es el mejor mecanismo para hacerlo. Buscar por coincidencia exacta de palabras se queda corto, porque dos textos pueden decir lo mismo con palabras distintas.

Ahí entra la búsqueda vectorial: genera una representación numérica de cada contenido y luego, cuando consultas algo en lenguaje natural, compara esa consulta con todos tus datos usando una medida de similitud [00:35]. El resultado es que encuentras textos parecidos aunque no compartan ni una sola palabra.

¿Qué es un embedding? Es la representación vectorial de un texto, es decir, una lista de valores numéricos de punto flotante que captura su significado. Dos textos con sentido parecido generan vectores cercanos entre sí.

Cómo preparar el dataset antes de generar embeddings

Para este ejemplo trabajamos con un dataset de recetas de platos, donde cada registro describe la receta y el proceso de preparación [02:00]. Antes de generar embeddings sobre todo ese contenido, hay un paso obligatorio.

Ese paso es la tokenización: dividir el texto en unidades procesables para que el modelo pueda manejarlo completo. Aquí se usa tiktoken para obtener esa representación en tokens [02:30].

Una vez tienes los tokens generados, los utilizas como insumo para crear los embeddings. El flujo queda así:

  • Cargar el dataset de recetas desde un archivo CSV.
  • Tokenizar cada registro con tiktoken.
  • Generar la representación vectorial de cada texto con el modelo ADA.

Después de este proceso, el dataframe conserva los datos originales, el número de tokens y el vector asignado a cada receta [04:10].

Cómo funciona la función que genera y compara vectores

El corazón de la implementación es una función que recibe un texto y devuelve su representación vectorial usando el modelo ADA [03:00]. Con ella, cualquier consulta del usuario se convierte en un vector listo para compararse.

Para probarlo se generó el vector del texto "Mi nombre es Maritza Mera". Al revisar su longitud se ve que es un vector bastante amplio, compuesto por valores de punto flotante [03:30].

¿Por qué guardar los embeddings en un archivo CSV aparte? Porque así conservas la representación vectorial de tu base de conocimiento y la vuelves a cargar en cualquier aplicación sin recalcular todos los vectores.

Luego hay una segunda función, ask_question, que recibe un texto, obtiene su vector y lo compara contra cada fila del dataframe con representaciones vectoriales. Te devuelve la fila o filas de las recetas más similares, según el número de resultados que pidas [05:10].

Qué resultados entrega la búsqueda vectorial

Con la función lista, ya puedes buscar a partir de frases o preguntas en lenguaje natural. El modelo no busca palabras idénticas, busca significado parecido.

Al enviar la consulta "Chocolate and berries", la función evalúa todas las recetas del dataset con sus vectores y devuelve las que más se parecen a esa entrada [05:50]. Todo se apoya en la representación vectorial lograda con el modelo ADA.

Algunos puntos técnicos clave que conviene recordar:

  • El modelo ADA de Azure OpenAI Service es el que genera las representaciones vectoriales [01:20].
  • El modelo ADA no está disponible en todas las regiones de Azure, por eso aquí se desplegó en la región este de Estados Unidos [01:40].
  • La configuración de OpenAI se hace consultando los datos guardados en variables de entorno [01:55].

Con esto logras búsqueda por similitud de texto sobre tus propios datos, respondiendo preguntas o consultas sin depender de coincidencias literales.

¿Ya pensaste con qué dataset propio lo probarías primero? Cuéntame en los comentarios qué tipo de consultas quieres resolver con búsqueda vectorial.

Búsqueda vectorial con embeddings de ADA en Azure