Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語
Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語

Construyendo una aplicación RAG en 10 minutos con Claude 3 y Hugging Face

En el ámbito de los avances en IA, las aplicaciones RAG destacan como herramientas transformadoras que están remodelando diversos sectores. Estas aplicaciones ofrecen un valor inmenso a las empresas al mejorar las capacidades de análisis de datos y las funciones predictivas. Al aprovechar una combinación de modelos de recuperación y generación, las aplicaciones RAG agilizan los procesos de recuperación de información, permitiendo a los investigadores acceder rápidamente a una gran cantidad de conocimientos en diversos ámbitos.

Cada vez más empresas de diferentes industrias recurren a RAG para potenciar su capacidad de IA. La fusión de los componentes de recuperación y generación en las aplicaciones RAG facilita el análisis de datos extensos de los clientes, obteniendo información práctica que impulsa recomendaciones personalizadas. Esta sinergia permite a las empresas aprovechar con confianza la tecnología de IA generativa para una amplia variedad de aplicaciones. Además, la arquitectura de las aplicaciones RAG combina la recuperación de información con modelos de generación de texto, lo que permite acceder a bases de datos para responder de manera efectiva a las consultas de los usuarios.

Al ajustar modelos de lenguaje grandes mediante técnicas como la cuantificación de incrustaciones y el ajuste fino con Recuperación Mejorada (RAFT, por sus siglas en inglés), los desarrolladores mejoran la robustez y eficiencia de las aplicaciones RAG.

# Cómo Claude mejora los modelos RAG

Claude 3 (opens new window), desarrollado por Anthropic, es una familia de modelos de IA avanzados que establece nuevos estándares en precisión y manejo de contexto. La familia Claude 3 incluye tres modelos: Haiku, Sonnet y Opus, cada uno diseñado para diferentes necesidades. Estos modelos son conocidos por su alta precisión factual y su capacidad para mantener el contexto en conversaciones largas. Especialmente, el modelo Opus supera a GPT-4 en varios puntos de referencia, incluyendo razonamiento a nivel de posgrado y pruebas de matemáticas básicas. Con una ventana de contexto de hasta 200,000 tokens, (opens new window) Claude 3 puede manejar entradas de texto extensas de manera más efectiva que sus competidores.

LLM Benchmark

Además de su rendimiento, los modelos Claude 3 priorizan el uso ético de la IA y la seguridad. Están diseñados para reducir los sesgos, proteger la privacidad del usuario y proporcionar respuestas precisas incluso a consultas complejas. Estos modelos también admiten tanto entradas de texto como visuales, lo que los hace versátiles para diversas aplicaciones como la creación de contenido y el análisis de datos. Con sólidas asociaciones y accesibilidad a través de varias plataformas, los modelos Claude 3 están bien posicionados para impulsar la innovación y la eficiencia en múltiples campos.

# Por qué elegir Hugging Face para modelos RAG

Hugging Face (opens new window) es una plataforma líder conocida por su extensa biblioteca de modelos pre-entrenados (opens new window), optimizados para diversas tareas de procesamiento de lenguaje natural, incluyendo Generación con Recuperación Mejorada (RAG) (opens new window). Estos modelos abarcan recuperación densa, generación secuencia a secuencia y otras tareas avanzadas, lo que facilita a los desarrolladores configurar y experimentar con diferentes configuraciones de RAG. Las API amigables para el usuario y la documentación completa de la plataforma simplifican aún más el proceso de integración y ajuste fino, lo que permite a incluso aquellos nuevos en modelos RAG implementar sistemas efectivos rápidamente. Al aprovechar las herramientas de Hugging Face, como LangChain y Ray, los desarrolladores pueden construir sistemas RAG escalables y de alto rendimiento que manejen eficientemente datos a gran escala y consultas complejas.

En este blog, nos centraremos específicamente en el uso de los modelos de incrustación de Hugging Face. Hugging Face ofrece una variedad de modelos de incrustación que son fundamentales para el paso inicial de los sistemas RAG: la recuperación de documentos relevantes. Estos modelos están diseñados para producir incrustaciones de alta calidad, que son esenciales para una recuperación de información precisa y eficiente. Al utilizar los modelos de incrustación de Hugging Face, podemos asegurarnos de que nuestro sistema RAG recupere el contexto más relevante para cualquier consulta dada, mejorando así la precisión y el rendimiento general de las respuestas generadas. Esta elección nos permite aprovechar la robustez y versatilidad de las ofertas de Hugging Face al adaptar nuestra implementación a las necesidades específicas de la generación de incrustaciones.

Boost Your AI App Efficiency now
Sign up for free to benefit from 150+ QPS with 5,000,000 vectors
Free Trial
Explore our product

# Construyendo una aplicación RAG con Claude 3 y las incrustaciones de Hugging Face

Ahora, construyamos una aplicación RAG utilizando los modelos de Claude 3 y las incrustaciones de Hugging Face. Pasaremos por los pasos de configurar el entorno, cargar documentos, crear incrustaciones y utilizar el modelo de Claude 3 para generar respuestas a partir de los documentos recuperados.

# Configurando el entorno

Primero, necesitamos instalar las bibliotecas necesarias. Descomenta la siguiente línea y ejecútala para instalar los paquetes requeridos. Si las bibliotecas ya están instaladas en tu sistema, puedes omitir este paso.

pip install langchain sentence-transformers anthropic

Esto instalará las bibliotecas langchain, sentence-transformers y anthropic necesarias para nuestro sistema RAG.

# Configurando las variables de entorno

A continuación, necesitamos configurar las variables de entorno para las conexiones de MyScale y la API de Claude 3. Utilizaremos MyScaleDB (opens new window) como una base de datos vectorial para esta aplicación RAG porque ofrece un alto rendimiento, escalabilidad y capacidades eficientes de recuperación de datos.

import os
# Configurando las conexiones de la base de datos vectorial
os.environ["MYSCALE_HOST"] = "tu-nombre-de-host"
os.environ["MYSCALE_PORT"] = "443"
os.environ["MYSCALE_USERNAME"] = "tu-nombre-de-usuario"
os.environ["MYSCALE_PASSWORD"] = "tu-contraseña-aquí"

# Configurando la clave de API para Claude 3
os.environ["ANTHROPIC_API_KEY"] = "tu-clave-de-api-de-claude-aquí"

Este script configura las variables de entorno necesarias para conectarse a la base de datos vectorial de MyScale y la API de Claude 3.

Nota:

Si no tienes una cuenta de MyScaleDB, puedes visitar el sitio web de MyScale (opens new window) para registrarte en una cuenta gratuita y seguir la guía de Inicio rápido (opens new window). Para utilizar la API de Claude 3, debes crear una cuenta en la Consola de Claude (opens new window).

# Importando las bibliotecas necesarias

Luego importamos las bibliotecas requeridas para cargar documentos, dividirlos, crear incrustaciones e interactuar con el modelo de Claude 3.

# Para dividir los documentos en fragmentos
from langchain.text_splitter import RecursiveCharacterTextSplitter
# Para usar MyScale como una base de datos vectorial
from langchain_community.vectorstores import MyScale
# Para usar Hugging Face para las incrustaciones
from langchain_huggingface import HuggingFaceEmbeddings
# Para cargar una página de Wikipedia
from langchain_community.document_loaders.wikipedia import WikipediaLoader

import anthropic

Estas bibliotecas nos ayudarán a gestionar los documentos, crear incrustaciones e interactuar con el modelo de Claude 3.

# Inicializando el cliente de Claude 3

Inicializamos el cliente para la API de Claude 3 para comunicarnos con el modelo.

client = anthropic.Anthropic()

# Cargando los documentos

Para este ejemplo, cargaremos documentos de Wikipedia utilizando el WikipediaLoader.

loader = WikipediaLoader(query="Fifa")

# Cargar los documentos
docs = loader.load()

Esto carga documentos relacionados con "Fifa" desde Wikipedia.

# Dividiendo los documentos

Dividimos los documentos cargados en fragmentos manejables utilizando RecursiveCharacterTextSplitter.

character_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)
docs = character_splitter.split_documents(docs)

Esto asegura que los documentos se dividan en fragmentos de 1000 caracteres con un solapamiento de 200 caracteres.

# Creando las incrustaciones

A continuación, utilizamos un modelo de incrustación de Hugging Face para crear incrustaciones para nuestros fragmentos de documentos.

embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-base-en-v1.5")
docsearch = MyScale(embedding_function=embeddings.embed_documents)
docsearch.add_documents(docs)

Este paso genera incrustaciones para los fragmentos de documentos y los agrega a nuestra base de datos vectorial de MyScale.

# Probando la búsqueda de documentos

Probamos la funcionalidad de búsqueda de documentos para asegurarnos de que nuestras incrustaciones y base de datos vectorial funcionen correctamente.

query = "¿Quién ganó el Fifa Fifa 2022?"
docs = docsearch.similarity_search(query, 3)
docs

Esto realiza una búsqueda de similitud en la consulta "¿Quién ganó el Fifa Fifa 2022?" y recupera los 3 documentos más relevantes. Devolverá documentos como estos:

[Document(page_content="La Copa Mundial de la FIFA, a menudo llamada Copa del Mundo, es una competencia internacional de fútbol entre las selecciones nacionales masculinas de los miembros de la Fédération Internationale de Football Association (FIFA), el organismo rector mundial del deporte. El torneo se ha celebrado cada cuatro años desde el torneo inaugural en 1930, con la excepción de 1942 y 1946 debido a la Segunda Guerra Mundial. Los campeones reinantes son Argentina, que ganó su tercer título en el torneo de 2022.\\nLa competencia comienza con la fase de clasificación, que tiene lugar durante los tres años anteriores para determinar qué equipos se clasifican para la fase de torneo. En la fase de torneo, 32 equipos compiten por el título en sedes dentro de la(s) nación(es) anfitriona(s) durante aproximadamente un mes. La(s) nación(es) anfitriona(s) se clasifican automáticamente para la fase de grupos del torneo. Se espera que la competencia se amplíe a 48 equipos, a partir del torneo de 2026.", metadata={'source': '<https://en.wikipedia.org/wiki/FIFA_World_Cup>', 'summary': "La Copa Mundial de la FIFA, a menudo llamada Copa del Mundo, es una competencia internacional de fútbol entre las selecciones nacionales masculinas de los miembros de la Fédération Internationale de Football Association (FIFA), el organismo rector mundial del deporte. El torneo se ha celebrado cada cuatro años desde el torneo inaugural en 1930, con la excepción de 1942 y 1946 debido a la Segunda Guerra Mundial. Los campeones reinantes son Argentina, que ganó su tercer título en el torneo de 2022.\\nLa competencia comienza con la fase de clasificación, que tiene lugar durante los tres años anteriores para determinar qué equipos se clasifican para la fase de torneo. En la fase de torneo, 32 equipos compiten por el título en sedes dentro de la(s) nación(es) anfitriona(s) durante aproximadamente un mes. La(s) nación(es) anfitriona(s) se clasifican automáticamente para la fase de grupos del torneo. Se espera que la competencia se amplíe a 48 equipos, a partir del torneo de 2026.\\nHasta la Copa Mundial de la FIFA 2022, se han celebrado 22 torneos finales desde el inicio del evento en 1930, y un total de 80 selecciones nacionales han competido. El trofeo ha sido ganado por ocho selecciones nacionales. Con cinco victorias, Brasil es el único equipo que ha participado en todos los torneos. Los otros ganadores de la Copa Mundial son Alemania e Italia, con cuatro títulos cada uno; Argentina, con tres títulos; Francia y Uruguay, ganadores inaugurales, con dos títulos cada uno; e Inglaterra y España, con un título cada uno.\\nLa Copa Mundial es el torneo de fútbol de asociación más prestigioso del mundo, así como el evento deportivo individual más visto y seguido en el mundo. Se estima que la audiencia de la Copa Mundial de 2018 fue de 3.57 mil millones, cerca de la mitad de la población mundial, mientras que la participación en la Copa Mundial de 2022 se estimó en 5 mil millones, con aproximadamente 1.5 mil millones de personas viendo el partido final.\\nDiecisiete países han sido sede de la Copa Mundial, siendo el más reciente Catar, que fue sede del evento de 2022. El torneo de 2026 será organizado conjuntamente por Canadá, Estados Unidos y México, lo que le dará a México la distinción de ser el primer país en albergar partidos en tres Copas Mundiales.\\n\\n", 'title': 'Copa Mundial de la FIFA'}),
 Document(page_content="La Copa Mundial de la FIFA 2026, comercializada como Copa Mundial FIFA 26, será la 23ª Copa Mundial FIFA, el campeonato internacional de fútbol masculino cuadrienal disputado por los equipos nacionales de las asociaciones miembro de la FIFA. El torneo se llevará a cabo del 11 de junio al 19 de julio de 2026. Será organizado conjuntamente por 16 ciudades de tres países norteamericanos: Canadá, México y Estados Unidos. El torneo será el primero organizado por tres naciones y la primera Copa Mundial de América del Norte desde 1994. Argentina es el campeón defensor.", metadata={'source': '<https://en.wikipedia.org/wiki/2026_FIFA_World_Cup>', 'summary': "La Copa Mundial de la FIFA 2026, comercializada como Copa Mundial FIFA 26, será la 23ª Copa Mundial FIFA, el campeonato internacional de fútbol masculino cuadrienal disputado por los equipos nacionales de las asociaciones miembro de la FIFA. El torneo se llevará a cabo del 11 de junio al 19 de julio de 2026. Será organizado conjuntamente por 16 ciudades de tres países norteamericanos: Canadá, México y Estados Unidos. El torneo será el primero organizado por tres naciones y la primera Copa Mundial de América del Norte desde 1994. Argentina es el campeón defensor.\\nEste torneo será el primero en incluir 48 equipos, ampliado desde 32. La candidatura de Estados Unidos 2026 venció a una candidatura rival de Marruecos durante una votación final en el 68º Congreso de la FIFA en Moscú. Será la primera Copa Mundial desde 2002 que será organizada por más de una nación. Con sus anteriores organizaciones de los torneos de 1970 y 1986, México se convertirá en el primer país en organizar o coorganizar la Copa Mundial masculina tres veces. Estados Unidos fue la última sede de la Copa Mundial masculina en 1994, mientras que será la primera vez que Canadá organice o coorganice el torneo masculino. El evento también volverá a su tradicional calendario de verano del hemisferio norte después de la edición de 2022 en Catar, que se celebró en noviembre y diciembre.", 'title': 'Copa Mundial FIFA 2026'}),
 Document(page_content="La Copa Mundial de la FIFA 2022 fue la 22ª Copa Mundial de la FIFA, el campeonato mundial de fútbol para equipos nacionales organizado por la FIFA. Se llevó a cabo en Catar del 20 de noviembre al 18 de diciembre de 2022, después de que el país obtuviera los derechos de organización en 2010. Fue la primera Copa Mundial que se celebró en el mundo árabe y el mundo musulmán, y la segunda que se celebró íntegramente en Asia después del torneo de 2002 en Corea del Sur y Japón.\\nEste torneo fue el último con 32 equipos participantes, ya que el número de equipos se incrementó a 48 para la edición de 2026. Para evitar los extremos del clima cálido de Catar, el evento se llevó a cabo en noviembre y diciembre en lugar de durante los meses tradicionales de mayo, junio o julio. Se llevó a cabo en un período de tiempo reducido de 29 días con 64 partidos jugados en ocho sedes en cinco ciudades. Catar ingresó al evento, su primera Copa Mundial, automáticamente como el equipo nacional anfitrión, junto con 31 equipos determinados por el proceso de clasificación.", metadata={'source': '<https://en.wikipedia.org/wiki/2022_FIFA_World_Cup>', 'summary': "La Copa Mundial de la FIFA 2022 fue la 22ª Copa Mundial de la FIFA, el campeonato mundial de fútbol para equipos nacionales organizado por la FIFA. Se llevó a cabo en Catar del 20 de noviembre al 18 de diciembre de 2022, después de que el país obtuviera los derechos de organización en 2010. Fue la primera Copa Mundial que se celebró en el mundo árabe y el mundo musulmán, y la segunda que se celebró íntegramente en Asia después del torneo de 2002 en Corea del Sur y Japón.\\nEste torneo fue el último con 32 equipos participantes, ya que el número de equipos se incrementó a 48 para la edición de 2026. Para evitar los extremos del clima cálido de Catar, el evento se llevó a cabo en noviembre y diciembre en lugar de durante los meses tradicionales de mayo, junio o julio. Se llevó a cabo en un período de tiempo reducido de 29 días con 64 partidos jugados en ocho sedes en cinco ciudades. Catar ingresó al evento, su primera Copa Mundial, automáticamente como el equipo nacional anfitrión, junto con 31 equipos determinados por el proceso de clasificación.\\nArgentina fue coronada campeona después de ganar la final contra el campeón defensor Francia 4-2 en los penales después de un empate 3-3 en tiempo extra. Fue el tercer título de Argentina y el primero desde 1986, además de ser la primera nación fuera de Europa en ganar el torneo desde 2002. El jugador francés Kylian Mbappé se convirtió en el primer jugador en marcar un hat-trick en una final de la Copa Mundial desde Geoff Hurst en la final de 1966 y ganó la Bota de Oro al marcar la mayor cantidad de goles (ocho) durante el torneo. Mbappé también se convirtió en el primer jugador en marcar en dos finales consecutivas desde Vavá de Brasil, quien hizo lo mismo en 1958 y 1962. El capitán argentino Lionel Messi fue elegido el mejor jugador del torneo, ganando el Balón de Oro. El torneo ha sido considerado excepcionalmente poético como el punto culminante de su carrera, cumpliendo un criterio previamente no cumplido para ser considerado uno de los mejores jugadores de todos los tiempos. Sus compañeros de equipo Emiliano Martínez y Enzo Fernández ganaron el Guante de Oro, otorgado al mejor portero del torneo, y el Premio al Mejor Jugador Joven, otorgado al mejor jugador joven del torneo, respectivamente. Con 172 goles, el torneo estableció un récord de la mayor cantidad de goles marcados en el formato de 32 equipos, con todos los equipos participantes marcando al menos un gol. Marruecos se convirtió en la primera nación africana en liderar la fase de grupos con 7 puntos.\\nLa elección de Catar como sede de la Copa Mundial atrajo críticas significativas, con preocupaciones sobre el trato a los trabajadores migrantes, las mujeres y los miembros de la comunidad LGBT, así como el clima de Catar, la falta de una fuerte cultura futbolística, los cambios de programación y las acusaciones de soborno para obtener los derechos de organización y la corrupción generalizada de la FIFA.", 'title': 'Copa Mundial FIFA 2022'})]

Ahora, el siguiente paso es utilizar el modelo de Claude 3 para obtener el resultado requerido a partir del contexto recuperado.

# Preparando el contexto de la consulta

Preparamos el contexto de los documentos recuperados para el modelo de Claude 3.

stre = "".join(doc.page_content for doc in docs)

Esto concatena el contenido de los documentos recuperados en una sola cadena.

# Configurando el modelo

Especifiquemos el modelo que queremos utilizar para generar respuestas.

model = 'claude-3-opus-20240229'

# Generando la respuesta

Finalmente, utilizamos el modelo de Claude 3 para generar una respuesta basada en el contexto proporcionado.

response = client.messages.create(
        system =  "Eres un asistente de investigación útil. Se te mostrarán datos de una amplia base de conocimientos. Debes responder a la consulta a partir del contexto proporcionado.",
        messages=[
                    {"role": "user", "content":  "Contexto: " + stre + "\\\\n\\\\n Consulta: " + query},
                ],
        model= model,
        temperature=0,
        max_tokens=160
    )
response.content[0].text

Este script envía el contexto y la consulta al modelo de Claude 3 y recupera la respuesta generada. Obtendrás una salida como esta:

'Según el contexto proporcionado, Argentina ganó la Copa Mundial de la FIFA 2022, convirtiéndose en los campeones reinantes. El pasaje dice:\\n\\n"Los campeones reinantes son Argentina, que ganó su tercer título en el torneo de 2022."'

Siguiendo estos pasos, hemos construido una aplicación RAG que utiliza las incrustaciones de Hugging Face y el modelo de Claude 3 para recuperar y generar respuestas a partir de una base de conocimientos.

# ¿Por qué elegir MyScaleDB para modelos RAG?

MyScaleDB destaca como una opción óptima para aplicaciones RAG debido a su combinación de capacidades avanzadas de búsqueda de vectores y soporte SQL. Construido sobre ClickHouse, permite la integración sin problemas de datos vectoriales y estructurados, lo que permite consultas complejas y eficientes. Esta integración simplifica la gestión de datos y mejora el rendimiento y la precisión del sistema RAG, lo que facilita el manejo eficiente de grandes volúmenes de datos.

Otra ventaja significativa de MyScaleDB es su eficiencia de costos y escalabilidad. Está diseñado para ser una de las bases de datos vectoriales más económicas del mercado, al tiempo que ofrece un rendimiento superior en comparación con sus competidores. Ofrece técnicas avanzadas de indexación de vectores como Multi-Scale Tree Graph (MSTG), que reduce el consumo de recursos y mejora la precisión. Funciones como el procesamiento por lotes dinámico y el soporte de subprocesamiento múltiple admiten grandes volúmenes de solicitudes simultáneas, manteniendo una baja latencia y un alto rendimiento. Estas capacidades hacen de MyScaleDB una solución de base de datos confiable y eficiente para aplicaciones RAG escalables.

Join Our Newsletter

# Conclusión

Desarrollar aplicaciones RAG simples es relativamente sencillo, pero optimizarlas y mantener la precisión de sus respuestas es un desafío. Por eso, la elección correcta de herramientas, como LLMs, bases de datos vectoriales y modelos de incrustación, es crucial. Cada componente desempeña un papel vital para garantizar que la aplicación se ejecute de manera eficiente y proporcione respuestas precisas y relevantes.

La elección de las bases de datos vectoriales es particularmente importante porque proporciona el contexto necesario para el LLM. MyScaleDB (opens new window) ha demostrado superar a las principales bases de datos vectoriales (opens new window) en términos de rendimiento y precisión. Además, MyScaleDB ofrece a los nuevos usuarios 5 millones de almacenamiento vectorial gratuito, lo que les permite probar sus funcionalidades y ver sus beneficios de primera mano. Esto lo convierte en una excelente opción para aquellos que buscan construir sistemas RAG de alto rendimiento.

Keep Reading
images
Cómo resumir documentos extensos con LangChain y OpenAI

Los modelos de lenguaje grandes han facilitado muchas tareas como la creación de chatbots, la traducción de idiomas, la síntesis de texto, etc. Solíamos escribir modelos para la síntesis de texto, y s ...

Start building your Al projects with MyScale today

Free Trial
Contact Us