LLM (Large Language Model)
Los LLMs son entrenados para generar predicciones de texto basadas en prompts. El truco está en que el modelo entienda la relación semántica entre palabras, y qué palabras de una secuencia son las que tienen más probabilidades de influir en la siguiente; el modelo usa esto para predecir cual es la siguiente palabra más probable en la secuencia.
Un LLM no tiene “memoria” como tal. Las conversaciones como tal no existen para ellos. Cada input de una conversación contiene todo lo que se ha hablado antes.
Al igual que tenemos LLMs, también existen SLMs (small language models). La diferencia se basa en el volumen de datos con el que han sido entrenados y en el número de variables.
Tokenization
El vocabulario de los LLMs se basa en cientos de miles de tokens, los cuales se basan en graaaandes volúmenes de datos de entrenamiento.
Los tokens se componen de palabras (perro, gato) pero también de partículas (“in” de “innecesario” o de “incomprensible”), puntuación (“casa” y “casa.” son tokens diferentes) y otras secuencias de caracteres.
Ejemplo de tokenization:
- I (1)
- heard (2)
- a (3)
- dog (4)
- bark (5)
- at (6)
- a (3) (already assigned before)
- tree (8)
Cuantos más datos de entreno, más tokens y más vocabulario tendrá.
Transforming tokens with a transformer
Ahora que tenemos una serie de tokens con un id único. Tenemos que relacionarlos entre ellos.
Para esto, le asignamos a cada token un vector. Un vector es una lista de números con múltiples dimensiones.
Un ejemplo de vector puede ser [0.25, 0.88, -0.47, 0.91]
Una vez tenemos inicializado este vector con valores aleatorios, utilizamos las dimensiones del vector para hacer un encoding lingüístico y asignarles el valor semántico del token (que significa y como se relaciona con otros tokens).
Because this new vectors have semantic values embedded in them, we call them embeddings
Transformer model
(tampoco quiero entrar en demasiado detalle).
Los vectores se generan mediante ML usando modelos especiales que se llaman embedding models. Estos se encargan de traducir raw data en listas de números.
El transformer model es el que se encarga de hacer el embedding, que es asignar ese valor semántico al vector inicializado.
Se compone de:
- Un encoder block - crea los embeddings aplicando una técnica llamada attention. La attention layer examina cada token y determina como es influenciado por los tokens alrededor suyo. Los resultados de la attention layer se introducen a una neural network conectada para conseguir la mejor representación vectorial.
La attention layer establece como el modelo decide que tokens son más relevantes para entender el contexto. Por ejemplo, el token casa puede recibir más atención si el modelo detecta que es clave en la frase.
- Un decoder usa los embeddings calculados por el encoder para determinar cual es el siguiente token más probable de aparecer en la secuencia, iniciada por el prompt.
Embedding
Un embedding es una representación numérica de datos en un espacio vectorial. De esta forma los modelos de IA pueden operar sobre datos no estructurados (texto o imágenes).
Los vectores de cada palabra o documento están diseñados para capturar el significado semántico del contenido.
- perro estará cerca de mascota
- contrato estará lejos de playa
Ventana de contexto (Context Window)
La ventana de contexto es el limite de memoria que tiene un LLM. Determina cuánto de la conversación actual puede “mantener en memoria” el modelo.
Si la ventana es suficiente, el modelo podrá mantener la totalidad de la conversación en memoria, pero si nos pasamos del límite, el modelo comenzará a olvidarse de las primeras partes de la conversación, y comenzará a dar respuestas más vagas.
Vector vs SQL databases
El problema con las BBDD típicas es que solo buscan matches exactos. Si yo busco por coche solo me sacará las entradas que contengan coche.
En cambio, como las BBDD de vectores pueden interpretar la semántica de las palabras mediante los vectores, si busco por coche puede sacarme valores como sedán, SUV, Land Rover, etc.
AI Agents
Un agente es un programa de SW el cual usa IA para razonar y actuar de forma (semi)autónoma usando las herramientas proporcionadas.
Se componen de tres elementos:
- Un LLM: es el cerebro
- Instrucciones: Un system prompt que define el rol y el comportamiento del agente
- Herramientas: el agente las utilizará para interactuar con el mundo. Estas pueden incluir:
- Knowledge tools que le den acceso a información (como BBDD o search engines)
- Action tools que permitan al agente ejecutar tasks (como enviar emails)
ejemplo: un programa (agente) que ayude a migrar código de Java a C#
- el user sube un archivo
.java - el agente analiza el código y decide que tools usar
- decide que necesita consultar una BBDD de patrones
- llama a una tool que accede a esa BBDD
- genera el código equivalente en C#
- lo entrega al usuario final y guarda el caso para futuros usos
Prompts
System prompt
Definidos por la app que usa el modelo. Se utilizan para definir el comportamiento y el tono del modelo, y cualquier otra restricción a la que se deba adherir.
You’re a helpful assistant that responds in a cheerful, friendly manner
User prompt
Dados por el usuario, o en casos puede que una aplicación, requieren de una respuesta a una pregunta o instrucción.
Summarize the key considerations for adopting gen AI. Format the summary as no more than six bullet points with a professional tone
Customizar modelos (Data Grounding - RAG/Fine Tuning)
El objetivo de customizar los modelos es mejorar aspectos de su performance, calidad y/o seguridad de sus respuestas.
Data Grounding
Proceso de enriquecer una respuesta generada por IA con datos externos o específicos para mejorar su calidad y/o seguridad de sus respuestas. Asegura que el output del modelo está alineado con datos factuales, contextuales y que son confiables.
Data Grounding no es una técnica, es el objetivo.
Para responder al prompt la IA no se basará sólo y únicamente en los datos de su entrenamiento, si no que se le proporciona información adicional (documentos, BBDD, APIs, etc.) para que sus respuestas estén basadas en datos reales y actualizados y no se los invente ni alucine.
RAG (Retrieval Augmented Generation)
Técnica específica de data grounding. Enriquece el conocimiento de un modelo conectándolo a bases de conocimiento externas.
En lugar de confiar solo en el conocimiento entrenado del modelo, busca datos relevantes en tiempo eral y los usa como contexto para generar la respuesta. Por ej: BBDD propietarias, documentos internos de la compañía…
Se usa:
- cuando se necesita exactitud basada en datos reales
- cuando el modelo no tiene conocimiento actualizado
- cuando trabajas con documentos privados o corporativos
Ejemplo:
- si le pregunto a un asistente cualquier ¿Cuánto dinero puedo pedir en gastos de desplazamiento?, seguramente me responderá que varía según mi empresa
- si el mismo modelo se construye en una app, la cual tiene la documentación de la empresa como RAG, el modelo irá al apartado correspondiente y lo consultará por mí, dándome como respuesta puedes pedir hasta x, según la documentación y
Cuando usar RAG
- Cuando necesites respuestas basadas en información muy reciente (hoy, news, current stock prices)
- Cuando necesites información de fuentes de datos privadas o propietarias (internal company policies, support logs)
- Cuando quieras que la IA cite sus fuentes
Fine-tuning
Fine tuning es coger un modelo pre-entrenado y especializarlo todavía más con datasets específicos. Esto adapta el modelo para un caso o dominio concreto.
Cuando usar Fine-tuning
- Cuando necesites que el LLM adopte un estilo, tono o persona específica (ej: hablar como Shakespeare).
- Cuando necesites que el LLM se profesionalice y responda con jargon de un dominio muy específico (dar soporte médico o legal).
Tips RAG / Fine-Tuning
¿Necesitas datos up-to-the-minute o acceso a datos privados? - Comenzar con RAG. Es más rápido de implementar y necesita menos datos que fine-tuning.
¿Necesitas que la IA hable/escriba en un estilo muy específico o que entienda un nicho de manera profunda? - Hacer fine-tuning. Ayuda al modelo a aprender patrones y estilos que solamente con RAG son muy difíciles de capturar.
¿Necesitas hacer tareas muy complejas que requieren datos específicos / actualizados y un conocimiento profundo? - Hacer ambos (Fine-tuning+RAG).
Evaluar resultados
Algunos indicadores para evaluar la calidad de estos conceptos son:
- Groundedness: measures how consistent the response is with respect to the retrieved context.
- Relevance: measures how relevant the response is with respect to the query.
- Fluency: measures natural language quality and readability.
- Coherence: measures logical consistency and flow of responses.
- Content safety: comprehensive assessment of various safety concerns.
Reference(s)
https://medium.com/data-science-collective/genai-power-plays-rag-vs-fine-tuning-vs-grounding-58bee7e285fc https://medium.com/@tahirbalarabe2/understanding-llm-context-windows-tokens-attention-and-challenges-c98e140f174d
https://generativeai.pub/vector-databases-a-beginners-first-step-into-searching-by-meaning-bcb9693dc39b