La IA generativa se refiere 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 relaciones en un conjunto de datos de contenido creado por humanos.
Esta tecnología ha demostrado capacidades increíbles, a través de aplicaciones como Gemini. Quizás te preguntes cómo implementar herramientas de IA generativa en mis productos web.
Un caso de uso común es proporcionar a los usuarios una mejor interfaz para hacer preguntas sobre el contenido de un sitio web. Con la ayuda del aprendizaje automático, puedes mejorar significativamente los resultados de la búsqueda de los usuarios.
Crea una búsqueda mejor y específica del sitio
Podrías crear una interfaz en la que los usuarios escriban su pregunta, que luego se enviará a un modelo de lenguaje grande (LLM), como Gemini, y, luego, mostrar las respuestas a los usuarios.
Supongamos que esa función existiera en este sitio. Un usuario quiere saber qué APIs se incluyen en Interop 2024 y, luego, ingresa la siguiente consulta:
What are the features included in Interop 24?
Lamentablemente, es probable que el resultado sea incorrecto por los siguientes motivos:
- El usuario le proporcionó al LLM poco contexto para la pregunta, por lo que el LLM es más propenso a mostrar respuestas incorrectas o alucinaciones.
- Es probable que el LLM se haya entrenado antes de que se creara Interop 2024 o de que se decidieran sus funciones, 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 LLM están, por naturaleza, desactualizados. Mantener resultados actualizados puede ser muy costoso y requerir mucho tiempo.
Usa 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 la probabilidad de que el LLM genere contenido relacionado con el contexto.
Siguiendo con nuestro ejemplo de interoperabilidad, nuestro 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 algo como lo 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, usando cualquier artículo como contexto adicional. Si bien esto puede ser posible para sitios más pequeños, dada la ventana de contexto de 1 millón de tokens de Gemini 1.5, las instrucciones más grandes son más lentas y más costosas de ejecutar.
Las longitudes de entrada y salida de los LLM se miden y se 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. Por 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 para la entrada de texto.
Una solución es proporcionar los artículos relevantes para la instrucción del LLM. Esta tarea debe tener dos partes:
- Agrega el contenido de los artículos principales como contexto cuando le pidas una respuesta al LLM.
- Busca en el contenido artículos relacionados con "¿Cuáles son las funciones incluidas en Interop 2024?".
Queremos que los resultados de Gemini muestren contenido basado en los siguientes artículos:
- Artículo 1: web.dev/blog/submit-your-proposals-for-interop-2024
- Artículo 2: web.dev/blog/interop-2023-wrapup
- Artículo 3: web.dev/blog/interop-2024
La entrada debe tener el siguiente aspecto:
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 el resultado esperado.
* 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 la RAG, una práctica común para mejorar la probabilidad de respuestas reales de las herramientas de IA generativa.
Mejora los resultados con la búsqueda semántica
Si bien la técnica RAG puede funcionar con la búsqueda normal de texto completo, tiene deficiencias.
- La búsqueda de texto completo ayuda a la IA a encontrar coincidencias exactas de palabras clave. Sin embargo, los LLM no pueden determinar el significado previsto detrás de la consulta de un usuario. Esto puede generar resultados incompletos o incorrectos.
- Puede haber problemas cuando las palabras tienen varios significados o las consultas usan sinónimos. Por ejemplo, “banco” (institución financiera en lugar de ribera) puede generar resultados irrelevantes.
- La búsqueda de texto completo puede generar resultados que contengan las palabras clave, pero que no se alineen con el objetivo del usuario.
La búsqueda semántica es una técnica que se enfoca en estos aspectos clave para mejorar la precisión de la búsqueda:
- Intención del buscador: Intenta comprender el motivo por el 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, así como otros factores, como la ubicación o el historial de búsqueda del usuario.
- Relación entre conceptos: La búsqueda semántica usa gráficos de conocimiento (grandes redes de entidades relacionadas) y el procesamiento de lenguaje natural para comprender cómo se conectan las palabras y las ideas.
Como resultado, cuando creas herramientas con la búsqueda semántica, el resultado de la búsqueda se basa en el propósito general de la búsqueda, en lugar de las palabras clave. Esto significa que una herramienta puede determinar los documentos relevantes, incluso cuando no está presente la palabra clave exacta. También puede evitar resultados en los que la palabra esté presente, pero tenga un significado diferente.
En este momento, puedes implementar dos herramientas de búsqueda que emplean la búsqueda semántica: Vertex AI Search y Algolia AI Search.
Extraer respuestas del contenido publicado
Aprendiste a usar la ingeniería de instrucciones para permitir que un LLM proporcione respuestas relacionadas con contenido que nunca vio 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 aumentada de recuperación (RAG). Aprendiste cómo la búsqueda semántica puede mejorar aún más los resultados de las búsquedas de los usuarios y cómo implementar mejor la RAG 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, dañinas de forma activa para una empresa. Con estas técnicas, tanto los usuarios como los desarrolladores pueden mejorar la confiabilidad y, tal vez, generar confianza en el resultado de estas aplicaciones.