Actualiza la búsqueda en tu sitio: Respuestas contextuales con la IA generativa

La IA generativa hace referencia al uso de inteligencia artificial para crear contenido nuevo, como texto, imágenes, música, audio y videos. La IA generativa se basa en un modelo de aprendizaje automático (AA) para aprender los patrones y las relaciones en un conjunto de datos de contenido creado por personas.

Esta tecnología demostró capacidades increíbles a través de aplicaciones como Gemini. Tal vez te preguntes, ¿cómo implemento las herramientas de IA generativa en mis productos web?

Un caso de uso común es brindar a los usuarios una mejor interfaz para hacer preguntas sobre el contenido de un sitio web. Puedes mejorar en gran medida los resultados de la búsqueda de los usuarios con la ayuda del aprendizaje automático.

Podrías crear una interfaz en la que los usuarios escriban su pregunta, que luego se envía a un modelo de lenguaje extenso (LLM), como Gemini, y, luego, mostrar las respuestas a los usuarios.

Supongamos que este sitio existía una función de este tipo. Un usuario quiere saber qué APIs se incluyen en Interoperabilidad 2024 y, luego, ingresa la siguiente consulta:

What are the features included in Interop 24?

Lamentablemente, es posible que el resultado sea incorrecto por dos razones:

  • El usuario le dio poco contexto al LLM para la pregunta, por lo que es más propenso a devolver respuestas incorrectas o alucinaciones.
  • Es probable que el LLM se entrenó antes de la creación de Interop 2024 o de sus atributos, por lo que no tiene conocimiento de esa información.

Si bien es posible que los LLM encuentren información más actualizada, los conjuntos de datos de entrenamiento de los LLM están inherentemente desactualizados. Mantener resultados actualizados puede consumir mucho tiempo y dinero.

Usa la ingeniería de instrucciones

La ingeniería de instrucciones es un conjunto de técnicas para obtener el mejor resultado de un LLM.

Una técnica es proporcionar contexto adicional en la instrucción, lo que aumenta las probabilidades de que el LLM genere contenido relacionado con el contexto.

Continuando con nuestro ejemplo de interoperabilidad, el primer paso es proporcionar el contenido completo del artículo como contexto. Luego, agrega la pregunta como entrada para que el LLM la responda. Por ejemplo:

Context:
Following on from the success of Interop 2022 and Interop 2023, we
are excited about the opportunity to collaborate once again with
all key browser vendors and other relevant stakeholders...
(trimmed to fit in this article)

Input:
What are the features included in Interop 2024?

Puedes esperar que Gemini genere un resultado similar al siguiente:

The features included in Interop 24 are Accessibility, CSS Nesting, Custom
Properties, Declarative Shadow DOM, font-size-adjust, HTTPS URLs for
WebSocket, IndexedDB, Layout, Pointer and Mouse Events, Popover, Relative
Color Syntax, requestVideoFrameCallback, Scrollbar Styling, @starting-style
and, transition-behavior, Text Directionality, text-wrap: balance,URL

Es probable que esta respuesta sea mucho mejor que con una instrucción sin contexto, ya que se basa en el contexto proporcionado.

Escala verticalmente con RAG

Por ejemplo, en lugar de responder una pregunta sobre un solo artículo, queremos que el LLM responda más preguntas sobre web.dev con cualquier artículo como contexto adicional. Si bien esto puede ser posible en sitios más pequeños, dada la ventana de contexto de Gemini 1.5 de 1 millón de tokens, los mensajes más grandes son más lentos y más costosos de ejecutarse.

Las longitudes de entrada y salida de los LLM se miden y cobran en tokens, que son una forma de representar una secuencia común de caracteres que se encuentran en una entrada de texto. Por lo general, la cantidad de tokens será mayor que la cantidad de palabras. A modo de ejemplo, la entrada del primer ejemplo tenía 775 palabras, representadas por 1,097 tokens. Los diferentes LLM pueden calcular los tokens de manera diferente y la mayoría proporciona una API o un extremo para calcular la cantidad de tokens de entrada de texto.

Una solución es proporcionar los artículos relevantes sobre la instrucción del LLM. Esta tarea consta de dos partes:

  1. Agrega el contenido de los artículos principales como contexto cuando solicites el LLM.
  2. Busca en el contenido artículos relacionados con "¿Cuáles son las características incluidas en Interop 2024?".

Queremos que los resultados de Gemini muestren contenido basado en los siguientes artículos:

La entrada debería verse de la siguiente manera:

Context:
Article 1:
Over the past two years... (trimmed)

Article 2:
At the end of last year Interop 2023 wrapped up. This effort... (trimmed)

Article 3:
Following on from the success of Interop 2022... (trimmed)

Input:
What are the features included in Interop 2024?

Este contexto produce la salida esperada.

* Accessibility * CSS Nesting * Custom Properties
* Declarative Shadow DOM * font-size-adjust
* HTTPS URLs for WebSocket * IndexedDB * Layout
* Pointer and Mouse Events * Popover * Relative Color Syntax
* requestVideoFrameCallback * Scrollbar Styling
* @starting-style and transition-behavior * Text Directionality
* text-wrap: balance * URL

Para quienes están familiarizados con las técnicas de IA, este enfoque usa RAG, una práctica común para mejorar la probabilidad de respuestas reales a partir de herramientas de IA generativa.

Si bien la técnica RAV puede funcionar con una búsqueda normal en el texto completo, el enfoque tiene algunas deficiencias.

  • La búsqueda en el texto completo ayuda a la IA a encontrar concordancias exactas de palabras clave. Sin embargo, los LLM no pueden determinar el significado previsto detrás de la consulta de un usuario. Esto puede provocar que los resultados estén incompletos o sean incorrectos.
  • Puede haber problemas cuando las palabras tienen varios significados o cuando las consultas usan sinónimos. Por ejemplo, "banco" (la institución financiera frente a la orilla del río) puede generar resultados irrelevantes.
  • La búsqueda en el texto completo puede generar resultados que contienen las palabras clave, pero que no se alinean con el objetivo del usuario.

La búsqueda semántica es una técnica para mejorar la precisión de la búsqueda enfocándose en estos aspectos clave:

  • Intención del usuario: Intenta comprender la razón por la que un usuario busca algo. ¿Qué están tratando de encontrar o lograr?
  • Significado contextual: Interpreta palabras y frases en relación con el texto que lo rodea, además de otros factores, como la ubicación del usuario o el historial de búsqueda.
  • Relación entre conceptos: la búsqueda semántica usa gráficos de conocimiento (grandes redes de entidades relacionadas) y procesamiento de lenguaje natural para comprender cómo se conectan las palabras y las ideas.

Como resultado, cuando compilas herramientas con búsqueda semántica, el resultado de la búsqueda se basa en el propósito general de la consulta, en lugar de usar palabras clave. Esto significa que una herramienta puede determinar documentos relevantes, incluso cuando la palabra clave exacta no está presente. También puede evitar resultados en los que la palabra está presente, pero tiene un significado diferente.

En este momento, puedes implementar dos herramientas de búsqueda que empleen búsqueda semántica: Vertex AI Search y Algolia AI Search.

Cómo obtener respuestas a partir del contenido publicado

Aprendiste a usar la ingeniería de instrucciones para permitir que un LLM proporcione respuestas relacionadas con contenido que nunca ha visto agregando contexto a la instrucción. Además, aprendiste a escalar este enfoque de artículos individuales a un corpus completo de contenido con la técnica de generación de aumento de recuperación (RAG). Aprendiste cómo la búsqueda semántica puede mejorar aún más los resultados de las búsquedas del usuario mediante una mejor implementación del modo RAV en tu producto.

Es un problema conocido que las herramientas de IA generativa pueden “alucinar”, lo que las hace, en el mejor de los casos, poco confiables o, en el peor, perjudiciales para un negocio. Con estas técnicas, los usuarios y los desarrolladores pueden mejorar la confiabilidad y, tal vez, generar confianza en los resultados de estas aplicaciones.