{"id":41190,"date":"2024-03-22T09:00:13","date_gmt":"2024-03-22T08:00:13","guid":{"rendered":"https:\/\/www.hiberus.com\/crecemos-contigo\/?p=41190"},"modified":"2024-12-23T14:08:51","modified_gmt":"2024-12-23T13:08:51","slug":"como-construir-un-chatbot-rag-serverless","status":"publish","type":"post","link":"https:\/\/www.hiberus.com\/crecemos-contigo\/como-construir-un-chatbot-rag-serverless\/","title":{"rendered":"C\u00f3mo construir un chatbot RAG serverless de alta precisi\u00f3n con Amazon Kendra y Bedrock en AWS"},"content":{"rendered":"<p>\u00bfC\u00f3mo podemos ense\u00f1ar a los\u00a0<strong>Large Language Models (LLMs)<\/strong>\u00a0a ser precisos, correctos y m\u00e1s confiables? El\u00a0<strong><a href=\"https:\/\/www.hiberus.com\/crecemos-contigo\/ask-your-web-pages-otro-enfoque-rag-utilizando-modelos-de-codigo-abierto\/\" target=\"_blank\" rel=\"noopener\">Retrieval-Augmented Generation<\/a> (RAG)<\/strong>\u00a0es un enfoque para incluir informaci\u00f3n adicional en el prompt. Sin embargo, construir un prototipo de una aplicaci\u00f3n RAG es pan comido, pero hacer que sea\u00a0<strong>preciso<\/strong>,\u00a0<strong>transparente<\/strong>,\u00a0<strong>seguro<\/strong>\u00a0y\u00a0<strong>production ready<\/strong>, manteniendo el control total sobre los\u00a0<strong>datos propietarios<\/strong>, es un verdadero desaf\u00edo.<\/p>\n<p>En esta publicaci\u00f3n de blog, demostramos <strong>c\u00f3mo construir chatbot RAG serverless<\/strong> de extremo a extremo en AWS y te guiamos en c\u00f3mo ampliar el conocimiento de un LLM con tus propios datos. El siguiente paso ser\u00e1 implementar nuestra soluci\u00f3n RAG con una <strong>arquitectura serverless<\/strong>, a diferencia de una arquitectura server-based donde generalmente debes realizar mucho trabajo m\u00e1s all\u00e1 de construir la aplicaci\u00f3n para implementarla y mantenerla, como poner en marcha m\u00e1quinas e instalar dependencias. Luego hay a\u00fan m\u00e1s trabajo con el mantenimiento continuo de ese sistema, como agregar parches de seguridad, actualizar dependencias, y as\u00ed sucesivamente.<\/p>\n<p>Al comenzar con una arquitectura serverless, puedes ahorrarte mucho tiempo y esfuerzo a medida que iteras en tu canalizaci\u00f3n RAG. Utilizaremos\u00a0<strong>Amazon Bedrock<\/strong>, que proporciona acceso a una variedad diversa de foundational models (FMs), y\u00a0<strong>Amazon Kendra<\/strong>\u00a0conectado a una fuente de datos \u2014 espec\u00edficamente, un\u00a0<strong>S3 bucket<\/strong>\u00a0que almacena nuestros datos privados. Todos estos servicios est\u00e1n conectados a un flujo de trabajo que impulsa a nuestro LLM a trav\u00e9s de un AWS Lambda para ejecutarse autom\u00e1ticamente cada vez que un usuario env\u00eda una nueva consulta, ahorrando esfuerzos y reduciendo costos. Finalmente, la funci\u00f3n AWS Lambda implementada ser\u00e1\u00a0<strong>invoked<\/strong>\u00a0y luego\u00a0<strong>triggered<\/strong>\u00a0a trav\u00e9s de una aplicaci\u00f3n web\u00a0<strong>Streamlit<\/strong> cada vez que un usuario env\u00ede una nueva pregunta.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41204 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/serverless_rag_architecture-1024x495.png\" alt=\"c\u00f3mo construir chatbot RAG serverless\" width=\"1024\" height=\"495\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/serverless_rag_architecture-1024x495.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/serverless_rag_architecture-300x145.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/serverless_rag_architecture-768x371.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/serverless_rag_architecture-360x174.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/serverless_rag_architecture.png 1267w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h2>C\u00f3mo construir un chatbot RAG serverless<\/h2>\n<h3>Setup<\/h3>\n<p>Antes de comenzar, instalemos todas las bibliotecas y paquetes necesarios:\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">langchain_core<\/span>\u00a0<\/strong>contiene las abstracciones b\u00e1sicas que alimentan el resto del ecosistema de LangChain. <strong><span style=\"background-color: lightgrey; font-family: monospace;\">langchain_community<\/span> <\/strong>contiene integraciones de terceros que implementan las interfaces base definidas en LangChain Core, haci\u00e9ndolas listas para usar en cualquier aplicaci\u00f3n de LangChain. Finalmente, instalaremos\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">openai<\/span>\u00a0<\/strong>y el paquete\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">langchain_openai<\/span><\/strong>, que incluye las integraciones de LangChain para OpenAI a trav\u00e9s de su SDK de\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">openai<\/span>. Es sorprendente ver c\u00f3mo LangChain ha evolucionado desde mi \u00faltima publicaci\u00f3n en el blog. Anteriormente, pod\u00edas hacer f\u00e1cilmente todas estas cosas usando solo el paquete\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">langchain<\/span> <\/strong>para todo tipo de chains, agents y estrategias de recuperaci\u00f3n que componen la arquitectura cognitiva de una aplicaci\u00f3n. \u00a1LangChain est\u00e1 avanzando a toda velocidad!<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41193 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/2-1024x208.png\" alt=\"\" width=\"1024\" height=\"208\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/2-1024x208.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/2-300x61.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/2-768x156.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/2-1536x312.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/2-360x73.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/2.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>El siguiente fragmento de c\u00f3digo ayudar\u00e1 en la carga de configuraci\u00f3n desde un archivo JSON y en la obtenci\u00f3n de credenciales confidenciales de Azure OpenAI mediante la funci\u00f3n\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">load_config()<\/span><\/strong>. Ten en cuenta que no utilizaremos modelos de OpenAI en este contexto. Sin embargo, nuestro objetivo es demostrar c\u00f3mo puedes integrarlos como una alternativa a los FMs accesibles a trav\u00e9s de Amazon Bedrock.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41194 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/3-1024x322.png\" alt=\"\" width=\"1024\" height=\"322\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/3-1024x322.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/3-300x94.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/3-768x241.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/3-1536x482.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/3-360x113.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/3.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Retriever<\/h3>\n<p>Para que el\u00a0<strong>generador<\/strong>\u00a0o el\u00a0<strong>LLM base<\/strong>\u00a0puedan generar respuestas, necesitan acceso a la consulta original del usuario y a documentos relevantes. El recuperador juega un papel crucial en los RAG pipelines, ya que es responsable de recuperar estos documentos relevantes. De hecho, es importante recordar el principio de\u00a0<strong><em>Garbage In Garbage Out<\/em><\/strong>, lo que significa que si la tasa de recuperaci\u00f3n del recuperador es baja, es probable que pase documentos irrelevantes al LLM, resultando en respuestas de baja calidad. Por lo tanto, la selecci\u00f3n del recuperador, ya sea un\u00a0<strong>cloud search service<\/strong>\u00a0o una\u00a0<strong>vector database<\/strong>\u00a0con el\u00a0<strong>modelo de embedding<\/strong>\u00a0correcto, debe hacerse cuidadosamente, considerando muchos factores.<\/p>\n<p>El\u00a0<strong>coraz\u00f3n de los chatbots RAG radica en la b\u00fasqueda sem\u00e1ntica<\/strong>. Por esta raz\u00f3n, elegimos trabajar con\u00a0<strong>Amazon Kendra<\/strong>, un servicio de b\u00fasqueda inteligente que utiliza procesamiento de lenguaje natural y algoritmos avanzados de aprendizaje autom\u00e1tico para devolver documentos relevantes a preguntas de b\u00fasqueda desde tus datos. Indexa tus documentos directamente o desde tu repositorio de documentos de terceros. Puedes usar Amazon Kendra para crear un \u00edndice actualizable de documentos de varios tipos. Sin embargo, una desventaja de Kendra es su\u00a0<strong>costo relativamente alto<\/strong>. Pero el costo no deber\u00eda ser una barrera si observamos sus impresionantes ventajas y capacidades:<\/p>\n<ul>\n<li><strong>Natural Language Querying<\/strong>: A diferencia de la b\u00fasqueda tradicional basada en palabras clave, Amazon Kendra permite a los usuarios buscar utilizando preguntas en lenguaje natural en lugar de solo palabras clave. Entiende el contexto detr\u00e1s de las consultas, facilitando la transmisi\u00f3n de contexto relevante al LLM.<\/li>\n<li><strong>Advanced Ranking<\/strong>: Amazon Kendra utiliza aprendizaje autom\u00e1tico para\u00a0<strong>clasificar los resultados de b\u00fasqueda seg\u00fan la relevancia<\/strong>. Esto asegura que el LLM reciba la informaci\u00f3n m\u00e1s \u00fatil y precisa en la parte superior de los resultados de b\u00fasqueda.<\/li>\n<li><strong>Unified Search Experience<\/strong>: Con Amazon Kendra, puedes crear una experiencia de b\u00fasqueda unificada conectando m\u00faltiples repositorios de datos a un \u00edndice. Ingiere y explora documentos, utilizando metadatos para adaptar la experiencia de b\u00fasqueda para tu LLM. Ya sean preguntas de hechos, consultas descriptivas o contenido complejo en lenguaje natural, Amazon Kendra lo maneja de manera efectiva.<\/li>\n<li><strong>Scalability and Integration<\/strong>: Amazon Kendra es altamente escalable e se integra sin problemas con otros servicios de AWS como\u00a0<strong>Amazon S3<\/strong>\u00a0y\u00a0<strong>Amazon Lex<\/strong>. Tambi\u00e9n ofrece seguridad de nivel empresarial.<\/li>\n<\/ul>\n<p>En nuestro caso, conectamos Amazon Kendra a un repositorio de documentos de terceros, tambi\u00e9n conocido como una fuente de datos, que es un\u00a0<strong>S3 bucket<\/strong>. Para mantener el \u00edndice actualizado, ejecutamos un\u00a0<strong>sync<\/strong>\u00a0<strong>diaria<\/strong>\u00a0del conector para recoger cualquier documento nuevo o actualizado de nuestro\u00a0<strong>S3 bucket<\/strong>.<\/p>\n<p>Importamos la clase\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">AmazonKendraRetriever<\/span>\u00a0<\/strong>del m\u00f3dulo de recuperadores, que utiliza la API de Recuperaci\u00f3n de Amazon Kendra para hacer consultas al \u00edndice de Amazon Kendra y obtener los resultados m\u00e1s relevantes con pasajes de extracto, especificados por\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">top_k<\/span>. Adem\u00e1s, debemos especificar los argumentos\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">index_id<\/span>\u00a0y\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">region_name<\/span>\u00a0de Kendra, de la siguiente manera:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41195 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/4-1024x226.png\" alt=\"\" width=\"1024\" height=\"226\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/4-1024x226.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/4-300x66.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/4-768x170.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/4-1536x339.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/4-360x80.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/4.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Antes de finalizar todo el proceso de RAG, puedes realizar una b\u00fasqueda sem\u00e1ntica utilizando el \u00edndice de Amazon Kendra al pasar una consulta de b\u00fasqueda a la funci\u00f3n\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">get_relevant_documents()<\/span> <\/strong>de la clase\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">AmazonKendraRetriever<\/span>, como se muestra a continuaci\u00f3n:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41196 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/5-1024x151.png\" alt=\"\" width=\"1024\" height=\"151\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/5-1024x151.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/5-300x44.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/5-768x113.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/5-1536x226.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/5-360x53.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/5.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Generator<\/h3>\n<p>Una vez que se han recuperado los fragmentos relevantes que se alinean con la consulta del usuario a trav\u00e9s de la b\u00fasqueda sem\u00e1ntica utilizando Amazon Kendra, servir\u00e1n como contexto para que el LLM genere respuestas contextualmente apropiadas. De hecho, si Kendra es el coraz\u00f3n palpitante de nuestra arquitectura RAG, entonces el LLM funciona como su columna vertebral, asumiendo la responsabilidad de generar respuestas humanas basadas en el contexto identificado y la consulta del usuario.<\/p>\n<p>En el mismo contexto, el mercado de los LLMs est\u00e1 creciendo r\u00e1pidamente, con empresas que contin\u00faan innovando e introduciendo modelos nuevos y potentes. El modelo\u00a0<strong>GPT-4<\/strong>\u00a0de OpenAI sigue siendo imbatible, incluso despu\u00e9s del lanzamiento de\u00a0<strong>Mistral Large<\/strong>, un modelo insignia con capacidades de razonamiento de primer nivel. En esta publicaci\u00f3n de blog, nos comprometemos a trabajar exclusivamente con el conjunto de servicios de AWS, raz\u00f3n por la cual seleccionamos\u00a0<strong>Anthropic Claude 2<\/strong>, accesible a trav\u00e9s de\u00a0<strong>Amazon Bedrock<\/strong>. Claude 2 ha demostrado un rendimiento s\u00f3lido en benchmarks com\u00fanmente utilizados, coloc\u00e1ndolo como el tercer modelo m\u00e1s destacado del mundo, justo detr\u00e1s de Mistral Large, como se muestra en la figura a continuaci\u00f3n. Es importante se\u00f1alar que, mientras plasmamos estos pensamientos, el panorama ya est\u00e1 evolucionando. La familia de modelos Anthropic\u00a0<strong>Claude 3<\/strong>\u00a0ha surgido y ya est\u00e1 disponible en AWS a trav\u00e9s de Bedrock en algunas regiones.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41203 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/mistral-large-plot.png\" alt=\"c\u00f3mo construir chatbot RAG serverless\" width=\"957\" height=\"485\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/mistral-large-plot.png 957w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/mistral-large-plot-300x152.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/mistral-large-plot-768x389.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/mistral-large-plot-360x182.png 360w\" sizes=\"auto, (max-width: 957px) 100vw, 957px\" \/><\/p>\n<p>Claude 2 se desempe\u00f1ar\u00e1 como nuestro LLM base o\u00a0<strong>generador<\/strong>\u00a0responsable de generar respuestas finales al usuario despu\u00e9s de procesar la\u00a0<strong>consulta original del usuario<\/strong>\u00a0y los\u00a0<strong>documentos relevantes<\/strong>\u00a0recuperados durante el paso de b\u00fasqueda, utilizando el recuperador potenciado por Amazon Kendra.<\/p>\n<p>Como ya se mencion\u00f3, Claude 2 es accesible a trav\u00e9s de Amazon Bedrock, que es un servicio completamente gestionado que ofrece una selecci\u00f3n de FMs de alto rendimiento de empresas l\u00edderes en IA como\u00a0<strong>AI21 Labs<\/strong>,\u00a0<strong>Anthropic<\/strong>,\u00a0<strong>Cohere<\/strong>,\u00a0<strong>Meta<\/strong>,\u00a0<strong>Mistral AI<\/strong>,\u00a0<strong>Stability AI<\/strong>\u00a0y\u00a0<strong>Amazon<\/strong>\u00a0a trav\u00e9s de una \u00fanica API, junto con un conjunto amplio de capacidades que necesitas para construir y escalar aplicaciones de IA generativa con seguridad, privacidad y IA responsable.<\/p>\n<p>LangChain es compatible con Amazon Bedrock, y con \u00e9l, podemos configurar un LLM personalizado utilizando la clase\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">Bedrock<\/span>\u00a0<\/strong>del m\u00f3dulo llms. Esto implica establecer varios argumentos como el\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\"><strong>generative configuration<\/strong><\/span>,\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">region_name<\/span>\u00a0y\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">model_id<\/span>:<\/p>\n<h4>1. Anthropic Claude-2<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41197 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/6-1024x379.png\" alt=\"\" width=\"1024\" height=\"379\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/6-1024x379.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/6-300x111.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/6-768x284.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/6-1536x568.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/6-360x133.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/6.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41199 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/7_o.png\" alt=\"\" width=\"766\" height=\"40\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/7_o.png 766w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/7_o-300x16.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/7_o-360x19.png 360w\" sizes=\"auto, (max-width: 766px) 100vw, 766px\" \/><\/p>\n<h4><strong>2. OpenAI GPT-4<\/strong><\/h4>\n<p>Si deseas seguir trabajando con el mejor LLM de la ciudad, GPT-4, tu viaje se facilita con el\u00a0<strong>Azure OpenAI Service<\/strong>. Configurar es pan comido: implementa el modelo en Azure OpenAI Studio y configura tus\u00a0<strong>credenciales<\/strong>\u00a0de Azure OpenAI en solo unos clics. Una vez hecho, conecta el\u00a0<strong>azure deployment name<\/strong>\u00a0en el constructor\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">AzureChatOpenAI<\/span><\/strong>&#8230; No se requiere adaptaci\u00f3n de c\u00f3digo en las secciones siguientes, ya sea que se trate de Claude 2 o un modelo OpenAI GPT. La vida puede ser dif\u00edcil, pero manteng\u00e1mosla sencilla.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41192 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/8-1024x360.png\" alt=\"\" width=\"1024\" height=\"360\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/8-1024x360.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/8-300x106.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/8-768x270.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/8-1536x541.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/8-360x127.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/8.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41211 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/9-1024x208.png\" alt=\"c\u00f3mo construir chatbot RAG serverless\" width=\"1024\" height=\"208\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/9-1024x208.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/9-300x61.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/9-768x156.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/9-1536x312.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/9-360x73.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/9.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41212 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/9_o.png\" alt=\"\" width=\"761\" height=\"40\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/9_o.png 761w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/9_o-300x16.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/9_o-360x19.png 360w\" sizes=\"auto, (max-width: 761px) 100vw, 761px\" \/><\/p>\n<h3>Prompt Template<\/h3>\n<p>Un\u00a0<strong>prompt template<\/strong>\u00a0o una plantilla de consulta consiste en un string template que puede aceptar un conjunto de par\u00e1metros del usuario. Estos par\u00e1metros se utilizan luego para generar un\u00a0<strong>prompt<\/strong>\u00a0para un LLM. En nuestro escenario, la plantilla incluye instrucciones y dos par\u00e1metros cruciales:\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">context<\/span>, que representa los documentos relevantes recuperados por Amazon Kendra, y\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">question<\/span>, que representa la consulta original del usuario.<\/p>\n<p>Utilizamos\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">PromptTemplate<\/span><\/strong>\u00a0de Langchain para dise\u00f1ar una plantilla para una consulta string, utilizando la sintaxis de formato de\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">str.format<\/span>\u00a0de Python para el templado. Solo recuerda, tienes la flexibilidad de personalizar las plantillas de consulta para formatear la consulta de la manera que desees.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41213 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/10-1024x417.png\" alt=\"c\u00f3mo construir chatbot RAG serverless\" width=\"1024\" height=\"417\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/10-1024x417.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/10-300x122.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/10-768x313.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/10-1536x625.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/10-360x147.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/10.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Chaining<\/h3>\n<p>Una vez que hemos preparado nuestro\u00a0<strong>recuperador<\/strong>\u00a0y\u00a0<strong>generador<\/strong>, as\u00ed como el\u00a0<strong>prompt template<\/strong>, es hora de combinarlos utilizando un m\u00e9todo de\u00a0<strong>chaining<\/strong>. Este enfoque utiliza primero el recuperador para encontrar\u00a0<strong>documentos relevantes<\/strong>\u00a0y luego emplea un\u00a0<strong>prompt template<\/strong>\u00a0predefinida para instruir al generador a responder una pregunta basada en estos documentos.<\/p>\n<p>Utilizamos la clase\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">RetrievalQA<\/span>\u00a0<\/strong>del m\u00f3dulo chains de LangChain para este prop\u00f3sito. Esta clase recupera documentos relevantes y luego los pasa, junto con la consulta original del usuario, al LLM utilizando la plantilla de consulta para generar una respuesta en lenguaje natural.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41191 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/11-1024x284.png\" alt=\"c\u00f3mo construir chatbot RAG serverless\" width=\"1024\" height=\"284\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/11-1024x284.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/11-300x83.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/11-768x213.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/11-1536x425.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/11-360x100.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/11.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Follow-Up Questions<\/h3>\n<p>Si deseas que tu canalizaci\u00f3n RAG admita <strong>follow-up<\/strong> preguntas, puedes utilizar <strong><span style=\"background-color: lightgrey; font-family: monospace;\">ConversationBufferMemory<\/span><\/strong>, la memoria conversacional m\u00e1s directa en LangChain, para pasar la entrada sin procesar de la conversaci\u00f3n pasada entre el humano y la IA. De hecho, puedes establecer el argumento\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">K<\/span>\u00a0para especificar el n\u00famero de interacciones que el modelo puede recordar antes de responder la pregunta actual. Por ejemplo, si\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">K=1<\/span>, el modelo recordar\u00e1 solo la interacci\u00f3n m\u00e1s reciente y olvidar\u00e1 el resto. Adem\u00e1s, no olvides utilizar\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">ConversationalRetrievalChain<\/span>\u00a0<\/strong>en lugar de\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">RetrievalQA<\/span>\u00a0para encadenar los diferentes componentes.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41205 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/12-1024x360.png\" alt=\"c\u00f3mo construir chatbot RAG serverless\" width=\"1024\" height=\"360\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/12-1024x360.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/12-300x106.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/12-768x270.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/12-1536x541.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/12-360x127.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/12.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>A medida que concluimos la fase de desarrollo, nuestro enfoque se desplaza ahora a interactuar con nuestro sistema a trav\u00e9s de consultas de datos. Es crucial que nuestro modelo se familiarice \u00edntimamente con nuestros datos y est\u00e9 informado sobre las fuentes m\u00e1s recientes. Pero espera&#8230; en nuestra\u00a0<strong>prompt template<\/strong>, le hemos dado a nuestra IA una identidad distintiva. Te presentamos a\u00a0<strong><em>HiberusAI, una asistente virtual de inteligencia artificial de Hiberus<\/em><\/strong>. Esta persona personalizada a\u00f1ade un toque de singularidad a nuestras interacciones, encarnando la esencia de\u00a0<strong>HiberusAI<\/strong>\u00a0en cada respuesta. Entonces, confirmemos esto haciendo la siguiente pregunta,\u00a0<strong><em>\u00bfQui\u00e9n eres?<\/em><\/strong><strong>:<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41206 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/13-1024x341.png\" alt=\"c\u00f3mo construir chatbot RAG serverless\" width=\"1024\" height=\"341\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/13-1024x341.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/13-300x100.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/13-768x256.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/13-1536x511.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/13-360x120.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/13.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41207 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/13_o.png\" alt=\"\" width=\"771\" height=\"82\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/13_o.png 771w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/13_o-300x32.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/13_o-768x82.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/13_o-360x38.png 360w\" sizes=\"auto, (max-width: 771px) 100vw, 771px\" \/><\/p>\n<p>Eso es incre\u00edble, una respuesta muy buena de nuestro genial chatbot HiberusAI! Es m\u00e1s que solo un conjunto de modelos; es un Asistente de IA personalizado y confiable&#8230;\u00a0<strong>Once blue, always blue!<\/strong>\u00a0As\u00ed que hagamos otra pregunta sobre\u00a0<a href=\"https:\/\/www.xalok.com\/english\"><strong>Hiberus Xalok<\/strong><\/a>, un CMS l\u00edder desarrollado por Hiberus para medios. \ud83d\udc99<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41208 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/14-1024x303.png\" alt=\"c\u00f3mo construir chatbot RAG serverless\" width=\"1024\" height=\"303\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/14-1024x303.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/14-300x89.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/14-768x227.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/14-1536x455.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/14-360x107.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/14.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41209 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/14_o.png\" alt=\"\" width=\"770\" height=\"131\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/14_o.png 770w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/14_o-300x51.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/14_o-768x131.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/14_o-360x61.png 360w\" sizes=\"auto, (max-width: 770px) 100vw, 770px\" \/><\/p>\n<p>\u00a1Respuesta perfecta! Para\u00a0<strong>transparencia<\/strong>\u00a0y\u00a0<strong>credibilidad<\/strong>, puedes revisar los documentos\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">top_k=n<\/span>\u00a0(3 en nuestro caso) que nuestro LLM consult\u00f3 para la consulta presentada. Imagina esto: \u00a1no solo la respuesta, sino todo el paquete con todos los metadatos! Por ejemplo, con un fragmento r\u00e1pido, puedes ver el\u00a0<strong>pasaje<\/strong>\u00a0exacto que nuestro modelo consider\u00f3, su\u00a0<strong>documento original<\/strong>\u00a0y el\u00a0<strong>n\u00famero de p\u00e1gina<\/strong>\u00a0de la que proviene.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41210 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/15-1024x246.png\" alt=\"c\u00f3mo construir chatbot RAG serverless\" width=\"1024\" height=\"246\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/15-1024x246.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/15-300x72.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/15-768x184.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/15-1536x369.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/15-360x86.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/15.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h2>AWS Lambda<\/h2>\n<p>Como mencionamos en la introducci\u00f3n, ahora procederemos con el despliegue de nuestra aplicaci\u00f3n RAG utilizando\u00a0<a href=\"https:\/\/aws.amazon.com\/pm\/lambda\/\"><strong>AWS Lambda<\/strong><\/a>\u00a0como un\u00a0<strong>serverless RAG<\/strong>. AWS Lambda es una plataforma de computaci\u00f3n sin servidor y basada en eventos proporcionada por Amazon como parte de AWS. Te permite ejecutar c\u00f3digo en una infraestructura de c\u00f3mputo de\u00a0<strong>high-availability<\/strong>\u00a0<strong>sin la necesidad de aprovisionar o gestionar servidores<\/strong>. Aseg\u00farate de haber creado un\u00a0<strong>Lambda Layer<\/strong>\u00a0con todas las dependencias necesarias, incluyendo los elementos de\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">LangChain<\/span>\u00a0<\/strong>y\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">boto3<\/span><\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41202 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/lambda-fun-1024x598.png\" alt=\"c\u00f3mo construir chatbot RAG serverless\" width=\"1024\" height=\"598\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/lambda-fun-1024x598.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/lambda-fun-300x175.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/lambda-fun-768x448.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/lambda-fun-360x210.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/lambda-fun.png 1235w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Cabe destacar que Lambda utiliza el entorno\u00a0<strong>Amazon Linux<\/strong>\u00a0como sistema operativo. Por lo tanto, aseg\u00farate de que todos los\u00a0<strong>paquetes de Python<\/strong>\u00a0est\u00e9n\u00a0<strong>instalados en distribuciones basadas en Linux<\/strong>, como Ubuntu. En AWS Lambda, un\u00a0<strong>Layer<\/strong>\u00a0es un mecanismo de distribuci\u00f3n para bibliotecas, entornos de ejecuci\u00f3n personalizados u otras dependencias de funciones que pueden compartirse entre m\u00faltiples funciones Lambda. Permite a los desarrolladores empaquetar su c\u00f3digo y dependencias por separado, facilitando su gesti\u00f3n y reutilizaci\u00f3n en varias funciones. Dicho esto, nuestra funci\u00f3n Lambda se desplegada con \u00e9xito y funciona bien. Ahora,\u00a0<strong>invoquemos<\/strong>\u00a0la funci\u00f3n y desarrollemos una incre\u00edble interfaz de usuario para activarla.<\/p>\n<h2>Chat UI<\/h2>\n<p>La llegada de modelos de LLMs como GPT y LLaMA-2 ha revolucionado la facilidad para desarrollar aplicaciones basadas en chat.\u00a0<strong>Streamlit<\/strong>\u00a0ofrece varios elementos de chat que te permiten construir interfaces de usuario para chatbots. Aprovechando el\u00a0<strong>session state<\/strong>\u00a0junto con estos elementos, puedes construir desde un chatbot b\u00e1sico hasta una experiencia m\u00e1s avanzada similar a ChatGPT utilizando solo c\u00f3digo en Python.<\/p>\n<p>En este tutorial, utilizaremos los elementos de chat de Streamlit, <strong><span style=\"background-color: lightgrey; font-family: monospace;\">streamlit.chat_message<\/span><\/strong>\u00a0y\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">streamlit.chat_input<\/span><\/strong>. Luego, agregaremos otras funcionalidades para habilitar el\u00a0<strong>streaming<\/strong>\u00a0de respuestas, mostrar\u00a0<strong>documentos fuente<\/strong>\u00a0utilizando un expander de Streamlit, y a\u00f1adir una funci\u00f3n que nos permita\u00a0<strong>recopilar comentarios de los usuarios<\/strong>\u00a0para mejorar en el futuro el rendimiento de nuestra aplicaci\u00f3n RAG. De hecho, hemos implementado la siguiente funci\u00f3n <strong><span style=\"background-color: lightgrey; font-family: monospace;\">invoke_lambda_function()<\/span><\/strong>, para invocar nuestra funci\u00f3n Lambda de AWS llamada\u00a0<strong>uc_genai_neddine-rag<\/strong>. Acepta dos argumentos,\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">payload<\/span>\u00a0y\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">function_name<\/span>, y devuelve un\u00a0<span style=\"background-color: lightgrey; font-family: monospace;\">diccionario<\/span>\u00a0que contiene la respuesta generada y los documentos fuente.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41200 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/16-1024x837.png\" alt=\"c\u00f3mo construir chatbot RAG serverless\" width=\"1024\" height=\"837\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/16-1024x837.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/16-300x245.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/16-768x627.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/16-1536x1255.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/16-220x180.png 220w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/16-360x294.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/16.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Puedes probarlo de la siguiente manera:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41201 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/17-1024x284.png\" alt=\"c\u00f3mo construir chatbot RAG serverless\" width=\"1024\" height=\"284\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/17-1024x284.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/17-300x83.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/17-768x213.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/17-1536x425.png 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/17-360x100.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/17.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Utilizamos la funci\u00f3n\u00a0<strong><span style=\"background-color: lightgrey; font-family: monospace;\">invoke_lambda_function()<\/span><\/strong>\u00a0para enviar una solicitud desde nuestra aplicaci\u00f3n Streamlit y activar la funci\u00f3n Lambda de AWS. Aseg\u00farate de que\u00a0<strong>AWS Lambda<\/strong>\u00a0y\u00a0<strong>AWS API Gateway<\/strong>\u00a0est\u00e9n configurados correctamente. Si\u00e9ntete libre de dise\u00f1ar tu propia interfaz de usuario impresionante, y por cierto, mi interfaz de chat se ver\u00e1 as\u00ed. \u00bfNo est\u00e1 genial?<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41217 size-large\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/chat_ui-1024x769.png\" alt=\"c\u00f3mo construir chatbot RAG serverless\" width=\"1024\" height=\"769\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/chat_ui-1024x769.png 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/chat_ui-300x225.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/chat_ui-768x577.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/chat_ui-360x270.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2024\/03\/chat_ui.png 1201w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>En resumen, desarrollar e implementar un\u00a0<strong>chatbot RAG<\/strong>\u00a0utilizando\u00a0<strong>AWS<\/strong>\u00a0representa un paso crucial para mejorar la confiabilidad y precisi\u00f3n de los\u00a0<strong>LLMs<\/strong>\u00a0con\u00a0<strong>datos privados<\/strong>, aunque pueden aplicarse excepciones. Al aprovechar la\u00a0<strong>arquitectura serverless<\/strong>, espec\u00edficamente a trav\u00e9s de\u00a0<strong>AWS Lambda<\/strong>, e integrar\u00a0<strong>Amazon Bedrock<\/strong>\u00a0y\u00a0<strong>Kendra<\/strong>, simplificamos el proceso, haci\u00e9ndolo\u00a0<strong>m\u00e1s eficiente<\/strong>\u00a0y\u00a0<strong>rentable<\/strong>. Este enfoque no solo simplifica el despliegue y el mantenimiento, sino que tambi\u00e9n ampl\u00eda el conocimiento de los LLMs con\u00a0<strong>acceso seguro<\/strong>\u00a0a datos propietarios. Finalmente, presentamos la respuesta generada y destacamos el impresionante rendimiento de nuestra soluci\u00f3n a trav\u00e9s de una sencilla aplicaci\u00f3n web de Streamlit.<\/p>\n<p>Mientras que el marco de trabajo\u00a0<strong>LangChain<\/strong>\u00a0est\u00e1 dise\u00f1ado para la prototipaci\u00f3n con un amplio espectro de aplicaciones de LLM, no limit\u00e1ndose \u00fanicamente a los RAGs,\u00a0<strong>LlamaIndex<\/strong>\u00a0es menos vers\u00e1til y se adapta especialmente bien a tareas relacionadas con sistemas RAG. En mi opini\u00f3n, LangChain avanza a toda velocidad con mucha anarqu\u00eda, pero LlamaIndex cierra sabiamente el ata\u00fad.<\/p>\n<p>La decisi\u00f3n de mantener la publicaci\u00f3n del blog simple signific\u00f3 no adentrarse en numerosos detalles importantes. Por lo tanto, recomiendo encarecidamente una evaluaci\u00f3n exhaustiva de tu canalizaci\u00f3n RAG antes de ponerla en producci\u00f3n. Adem\u00e1s, considera implementar\u00a0<strong>estrategias \u00e9ticas<\/strong>\u00a0para garantizar la\u00a0<strong>seguridad<\/strong>\u00a0y\u00a0<strong>confiabilidad<\/strong>\u00a0del modelo, mitigar las\u00a0<strong>alucinaciones<\/strong>\u00a0del modelo y prevenir la\u00a0<strong>fuga de datos<\/strong>\u00a0que puede ocurrir debido a consultas enga\u00f1osas. Todo esto es esencial para mantener al LLM alineado con los valores humanos y priorizar la privacidad del usuario.<\/p>\n<p><strong><em>Restez branch\u00e9<\/em><\/strong><\/p>\n<p>En <a href=\"https:\/\/www.hiberus.com\/\" target=\"_blank\" rel=\"noopener\">hiberus<\/a>\u00a0creemos que la IA se va a convertir en una herramienta imprescindible en todos los campos y sectores en un futuro pr\u00f3ximo. Por eso hemos creado la <a href=\"https:\/\/www.hiberus.com\/data-ia\/behind-the-ai\">newsletter Behind the AI<\/a> en la que te contamos todas las novedades y hechos relevantes que debes conocer para no perderte nada sobre Inteligencia Artificial.<\/p>\n<p><a href=\"https:\/\/www.hiberus.com\/data-ia\/behind-the-ai\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-32439 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/06\/banner-horizontal.jpg\" alt=\"behind the AI\" width=\"1920\" height=\"654\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/06\/banner-horizontal.jpg 1920w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/06\/banner-horizontal-300x102.jpg 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/06\/banner-horizontal-1024x349.jpg 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/06\/banner-horizontal-768x262.jpg 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/06\/banner-horizontal-1536x523.jpg 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/06\/banner-horizontal-360x123.jpg 360w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>\u00bfQuieres aprovechar el poder de la IA Generativa para impulsar tu negocio? Contamos con un equipo de <a href=\"https:\/\/www.hiberus.com\/data-ia\/ia\"><strong>expertos en IA Generativa y Data<\/strong><\/a> que han desarrollado <strong>GenIA Ecosystem<\/strong>, un ecosistema de soluciones propias de IA conversacional, generaci\u00f3n de contenido y data adaptadas a las necesidades de cada mercado y cliente. Contacta con nosotros y estaremos encantados de ayudarte.<\/p>\n        <div class=\"row\">\n            <div class=\"block-cta-form\" style=\"background-color: #003664;\">\n                <div class=\"content-cta-form\">\n                    <div class=\"text-cta-form\">\n                        <p class=\"title-cta-form\">\u00bfQuieres m\u00e1s informaci\u00f3n sobre nuestros servicios de IA Generativa?<\/p>\n                        <p>Contacta con nuestro equipo de expertos en IA Generativa<\/p>\n                    <\/div>\n                    <div class=\"form-fields\">\n                        \n<div class=\"wpcf7 no-js\" id=\"wpcf7-f33973-o1\" lang=\"es-ES\" dir=\"ltr\" data-wpcf7-id=\"33973\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/41190#wpcf7-f33973-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Formulario de contacto\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"33973\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.5\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"es_ES\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f33973-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/><input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/fieldset>\n<div id=\"responsive-form\" class=\"clearfix\">\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"nombre\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Nombre *\" value=\"\" type=\"text\" name=\"nombre\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"apellido\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Apellido *\" value=\"\" type=\"text\" name=\"apellido\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"correo\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Correo corporativo *\" value=\"\" type=\"email\" name=\"correo\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"telf-contacto\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-tel wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-tel\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Tel\u00e9fono *\" value=\"\" type=\"tel\" name=\"telf-contacto\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"compania\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Compa\u00f1ia *\" value=\"\" type=\"text\" name=\"compania\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-full\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"mensaje\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Mensaje *\" name=\"mensaje\"><\/textarea><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-full color-acceptance\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"politica\"><span class=\"wpcf7-form-control wpcf7-acceptance\"><span class=\"wpcf7-list-item\"><label><input type=\"checkbox\" name=\"politica\" value=\"1\" aria-invalid=\"false\" \/><span class=\"wpcf7-list-item-label\">He le\u00eddo y acepto la <a href=\"https:\/\/www.hiberus.com\/politica\" target=\"_blank\"><u>Pol\u00edtica de privacidad<\/u><\/a><\/span><\/label><\/span><\/span><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-full color-acceptance\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"marketing\"><span class=\"wpcf7-form-control wpcf7-acceptance optional\"><span class=\"wpcf7-list-item\"><label><input type=\"checkbox\" name=\"marketing\" value=\"1\" aria-invalid=\"false\" \/><span class=\"wpcf7-list-item-label\">Me gustar\u00eda recibir comunicaciones de marketing de Hiberus y sobre sus productos, servicios y eventos.<\/span><\/label><\/span><\/span><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"Contacta con nosotros\" \/>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div id=\"campos_ocultos\" class=\"hidden\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new1\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new1\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new1\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new2\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new2\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new2\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new3\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new3\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new3\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new4\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new4\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new4\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new_p\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new_p\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new_p\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n<!--end responsive-form--><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        \n","protected":false},"excerpt":{"rendered":"<p>\u00bfC\u00f3mo podemos ense\u00f1ar a los\u00a0Large Language Models (LLMs)\u00a0a ser precisos, correctos y m\u00e1s confiables? El\u00a0Retrieval-Augmented Generation (RAG)\u00a0es un enfoque para incluir informaci\u00f3n&#8230;<\/p>\n","protected":false},"author":321,"featured_media":41220,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_ayudawp_aiss_exclude":false,"footnotes":""},"categories":[236,7],"tags":[158,198,156],"class_list":{"0":"post-41190","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-data-ia","8":"category-next-tech","9":"tag-aws","10":"tag-data","11":"tag-inteligencia-artificial"},"acf":[],"_links":{"self":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/41190","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/users\/321"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/comments?post=41190"}],"version-history":[{"count":11,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/41190\/revisions"}],"predecessor-version":[{"id":43235,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/41190\/revisions\/43235"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/media\/41220"}],"wp:attachment":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/media?parent=41190"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/categories?post=41190"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/tags?post=41190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}