{"id":9670,"date":"2024-02-19T14:59:51","date_gmt":"2024-02-19T19:59:51","guid":{"rendered":"https:\/\/blogs.pacasmayo.com\/felipe\/?p=9670"},"modified":"2024-02-19T14:59:52","modified_gmt":"2024-02-19T19:59:52","slug":"desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto","status":"publish","type":"post","link":"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/","title":{"rendered":"Desmitificando la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG): Una Gu\u00eda Paso a Paso para lograr ChatGPT con Contexto"},"content":{"rendered":"\n<p id=\"b515\"><br>Los Modelos de Lenguaje de Gran Tama\u00f1o (LLM, por sus siglas en ingl\u00e9s), especialmente aquellos del tipo &#8220;generativo&#8221;, han causado un gran impacto en el mundo. Y la Generaci\u00f3n Mejorada por Recuperaci\u00f3n (RAG, por sus siglas en ingl\u00e9s) se ha vuelto muy popular como la t\u00e9cnica predominante para que los LLM respondan preguntas basadas en nuestra informaci\u00f3n personalizada.<\/p>\n\n\n\n<p id=\"393c\">Entiendo que hay muchas herramientas en el mercado hoy en d\u00eda para ayudar a configurar RAG en minutos, pero antes de usar las herramientas sofisticadas que ocultan todos los detalles de implementaci\u00f3n, quiz\u00e1s quieras entender qu\u00e9 est\u00e1 pasando realmente bajo la superficie. Y no hay mejor manera de aprender c\u00f3mo funcionan las cosas que escribir el c\u00f3digo uno mismo. As\u00ed que, aqu\u00ed va un paso a paso, con explicaciones detalladas.<\/p>\n\n\n\n<p id=\"750c\">Entiendo que hay muchas herramientas en el mercado hoy en d\u00eda para ayudar a configurar RAG en minutos, pero antes de usar las herramientas sofisticadas que ocultan todos los detalles de implementaci\u00f3n, quiz\u00e1s quieras entender qu\u00e9 est\u00e1 pasando realmente bajo la superficie. Y no hay mejor manera de aprender c\u00f3mo funcionan las cosas que escribir el c\u00f3digo uno mismo. <\/p>\n\n\n\n<p id=\"750c\">As\u00ed que, aqu\u00ed va un paso a paso, con explicaciones detalladas.<\/p>\n\n\n\n<p id=\"d281\">Requisitos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Docker (o un entorno de Python con langchain, openai, pandas y numpy)<\/li>\n\n\n\n<li>Acceso a la API de OpenAI<\/li>\n\n\n\n<li>Inter\u00e9s en entender c\u00f3mo funcionan las cosas<\/li>\n<\/ul>\n\n\n\n<p id=\"07cf\">Si usas la ruta de Docker, puedes usar este Dockerfile:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/aa61704b5e8b0f9826612cfa485a80d0.js\"><\/script>\n\n\n\n<p id=\"f140\">Constr\u00fayelo y ejec\u00fatalo montando la carpeta local donde escribir\u00e1s tu c\u00f3digo de Python:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker build . --tag rag<br>docker run --rm -it -v $(pwd):\/src rag bash<\/code><\/pre>\n\n\n\n<p>Si vas a usar Docker, escribe el c\u00f3digo en la carpeta fuera de Docker, y ejecuta en la shell del contenedor. Visual Studio Code hace esto muy f\u00e1cil, pero tambi\u00e9n se puede hacer manualmente.<\/p>\n\n\n\n<p>As\u00ed que, lo primero que necesitar\u00e1s es configurar tus variables en el entorno. En Linux:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export OPENAI_API_KEY=\"xxxx\"<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"ceca\">Interactuando con ChatGPT<\/h1>\n\n\n\n<p id=\"2b98\">Perfecto, as\u00ed que ahora simplemente charlaremos con ChatGPT a trav\u00e9s de Python.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/6668d20225dae35a93a36d0c2e6e9c00.js\"><\/script>\n\n\n\n<p>Como puedes ver, escribir c\u00f3digo para charlar con ChatGPT es extremadamente simple. Pero, en este punto, ChatGPT solo est\u00e1 respondiendo desde su propio conocimiento (miles de millones de documentos de entrenamiento). Para que ChatGPT use nuestra propia base de conocimiento para responder las preguntas necesitamos encontrar una manera de inyectar nuestros datos en esa conversaci\u00f3n. Pero no es tan f\u00e1cil. ChatGPT no puede ser &#8220;alimentado&#8221; con grandes cantidades de datos, as\u00ed que necesitamos encontrar los documentos m\u00e1s relevantes por nosotros mismos, y proporcion\u00e1rselos a ChatGPT como contexto para la pregunta. Y preferir\u00edamos lograrlo sin tener que implementar otro LLM, ni tener que reentrenar o ajustar estos modelos cada vez que nuestros documentos cambien. D\u00e9jame mostrarte c\u00f3mo hacer justo eso.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"c322\">Incrustaciones y vectores<\/h1>\n\n\n\n<p id=\"2870\">Para que ChatGPT responda la pregunta bas\u00e1ndose en tu contenido, primero necesitas entender un poco sobre las incrustaciones. Una incrustaci\u00f3n es una representaci\u00f3n vectorial de la sem\u00e1ntica de un texto. Es lo que nos permite usar conceptos, herramientas y t\u00e9cnicas matem\u00e1ticas para manipular y comparar texto. D\u00e9jame mostrarte un ejemplo:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/13e50a7fb4d3f34332c332344edf814d.js\"><\/script>\n\n\n\n<p id=\"30b8\">Lo primero que notar\u00e1s es que el contenido de &#8220;resultados&#8221; es enorme. Es un arreglo muy grande de n\u00fameros de punto flotante que representan el texto. Esos n\u00fameros no son una versi\u00f3n encriptada o codificada del texto, representan el significado sem\u00e1ntico del texto en vectores de alta dimensi\u00f3n.<\/p>\n\n\n\n<p id=\"30b8\">Para intentar entender esto, imaginemos que quiero representar personas con n\u00fameros. Creo que podr\u00eda hacer esto f\u00e1cilmente con la edad. Puedo representar a una persona de 2 a\u00f1os con un n\u00famero 2 y a una de 4 a\u00f1os con un n\u00famero 4. Dado que solo tenemos una dimensi\u00f3n, podr\u00eda representarlas con l\u00edneas y se ver\u00eda algo as\u00ed:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"297\" height=\"85\" src=\"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2024\/02\/image-4.png\" alt=\"\" class=\"wp-image-9667\"\/><\/figure>\n\n\n\n<p id=\"66c2\">Pero entonces, si quisiera agregar un componente de altura en pies, la representaci\u00f3n tendr\u00eda que agregar una segunda dimensi\u00f3n y se ver\u00eda as\u00ed:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"332\" height=\"218\" src=\"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2024\/02\/image-3.png\" alt=\"\" class=\"wp-image-9666\" srcset=\"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2024\/02\/image-3.png 332w, https:\/\/blogs.pacasmayo.com\/felipe\/files\/2024\/02\/image-3-300x197.png 300w\" sizes=\"auto, (max-width: 332px) 100vw, 332px\" \/><\/figure>\n\n\n\n<p id=\"c8d9\">La informaci\u00f3n ahora tiene dos dimensiones, y aunque podr\u00edamos simplemente dibujar un punto en las intersecciones de la edad y la altura, realmente estamos m\u00e1s interesados en ver el vector (recuerda, magnitud y direcci\u00f3n). En este caso, la persona de 2 a\u00f1os est\u00e1 representada por un vector de dos dimensiones:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/dbee82e64a00089d8f65774f44653656.js\"><\/script>\n\n\n\n<p id=\"f6c0\">Las cosas se vuelven un poco m\u00e1s complejas si agrego una tercera dimensi\u00f3n: peso en kilogramos. El vector ahora tiene un valor diferente en cada dimensi\u00f3n, y el gr\u00e1fico ahora es tridimensional:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"283\" height=\"193\" src=\"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2024\/02\/image-5.png\" alt=\"\" class=\"wp-image-9668\"\/><\/figure>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/80ac7365d7919fe2749545a970385933.js\"><\/script>\n\n\n\n<p id=\"0190\">Nota que la direcci\u00f3n para un vector bidimensional estaba representada por el \u00e1ngulo de la l\u00ednea, pero ese no es el caso m\u00e1s all\u00e1 de dos dimensiones. Agregar una cuarta dimensi\u00f3n hace que sea muy dif\u00edcil dibujar en un sistema bidimensional como nuestras pantallas, y se mueve a un \u00e1mbito que es dif\u00edcil de visualizar, sin embargo, el an\u00e1lisis de la descripci\u00f3n de estas dos personas en cuatro dimensiones diferentes que pueden ser representadas por n\u00fameros es lo que nos permite usar algoritmos y herramientas existentes para manipular estos objetos no num\u00e9ricos.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/bb31f31e5c1d2ad4f3bec2d6d185bb3f.js\"><\/script>\n\n\n\n<p id=\"08bb\">Ahora, volviendo a los resultados que obtuvimos de la solicitud para crear una incrustaci\u00f3n vectorial de nuestro texto, los Modelos de Lenguaje de Gran Tama\u00f1o (LLM) identifican miles de dimensiones contra las cuales se eval\u00faa el texto y devuelven este gran n\u00famero de coordenadas que describen el texto en un vector de alta dimensi\u00f3n. En el caso del modelo text-embedding-ada-002, devuelve un vector de 1,536 dimensiones.<br>Tambi\u00e9n, nota que los vectores para ambos textos tienen la misma cantidad de dimensiones, la longitud del texto no afecta la cantidad de dimensiones contra las que ha sido evaluado. Eso es clave, porque har\u00e1 posible la comparaci\u00f3n de los dos vectores, siendo que representan el significado sem\u00e1ntico de los textos en las mismas dimensiones.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"b0c2\">Similitud de vectores<\/h1>\n\n\n\n<p id=\"3217\">Ahora que hemos creado incrustaciones con \u00e9xito, necesitamos averiguar c\u00f3mo nos ayudar\u00e1n a realizar tareas de IA. En primer lugar, notemos que lo que hemos hecho es crear una representaci\u00f3n del significado sem\u00e1ntico de esos textos usando vectores. En segundo lugar, los vectores son conceptos matem\u00e1ticos, y tenemos formas matem\u00e1ticas de tratar con ellos. Por ejemplo,<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/c397ea177dab5ce4723263dba121a6ce.js\"><\/script>\n\n\n\n<p>Nota que compar\u00e9 dos vectores de dos dimensiones, y que ambos tienen los mismos n\u00fameros, dos y cinco, pero, la similitud entre ellos es solo del 68%.<\/p>\n\n\n\n<p>Incrementemos las dimensiones:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/0155aae02a89a31a46b4b5ab954cb140.js\"><\/script>\n\n\n\n<p id=\"86e4\">La similitud es a\u00fan menor, estos dos vectores definitivamente van en direcciones diferentes. Recuerda que aunque tengamos dos dieces, dos cincos, etc., la comparaci\u00f3n es por dimensi\u00f3n, por lo que la funci\u00f3n est\u00e1 comparando 1 con 10 en la primera dimensi\u00f3n, 2 con 5 en la segunda, y as\u00ed sucesivamente. La comparaci\u00f3n por dimensi\u00f3n encuentra que estos dos vectores son muy diferentes. El punto se reforzar\u00e1 si usamos n\u00fameros totalmente diferentes en ambos vectores, pero que mantienen una direcci\u00f3n y magnitud similares:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/2599071d0f126b17fce4c0a162b92852.js\"><\/script>\n\n\n\n<p id=\"795c\">Como puedes ver, estos conjuntos de n\u00fameros completamente diferentes son en realidad 98% similares porque su direcci\u00f3n y magnitud son casi id\u00e9nticas. Ahora comparemos los valores de los ni\u00f1os de 2 y 4 a\u00f1os:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/c4b72d3f5fb5d70ba09ce5a26913eb76.js\"><\/script>\n\n\n\n<p id=\"916b\">Wow, m\u00e1s del 99% similares, lo que la funci\u00f3n cosine_similarity nos est\u00e1 diciendo es que estos dos vectores representan casi lo mismo. Si lo piensas, ambos vectores representan a un ni\u00f1o en diferentes momentos de su vida, de ah\u00ed la similitud. \u00bfQu\u00e9 pasa si comparamos el vector de un ni\u00f1o de 2 a\u00f1os con el de un adulto? Bueno, los resultados ser\u00e1n completamente diferentes:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/c5cdc6e4309ed7303effe6cc3eb3eb86.js\"><\/script>\n\n\n\n<p id=\"9294\">Estos dos individuos son tan diferentes que esta comparaci\u00f3n superficial sobre solo cuatro dimensiones los considera estar muy lejos el uno del otro.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"01ce\">Similitud de incrustaciones<\/h1>\n\n\n\n<p id=\"9703\">Ahora que entendemos mejor c\u00f3mo se pueden comparar dos vectores, volvamos a los dos vectores que obtuvimos de text-embedding-ada-002 de OpenAI y compar\u00e9moslos:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/f5587f9d4547e37f809596867b9070b8.js\"><\/script>\n\n\n\n<p>Al comparar vectores de incrustaci\u00f3n para similitud de texto, aunque sean tan dis\u00edmiles como estos, observaremos que, sem\u00e1nticamente, su similitud suele estar por encima del 70%, as\u00ed que un 72% es bajo.<\/p>\n\n\n\n<p>Entonces, cambiemos los textos por algunos textos similares:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/c3009b66dc28c87078ab6ebb3899ce17.js\"><\/script>\n\n\n\n<p id=\"e3dd\">Ok, estos dos textos comparten tres palabras y solo difieren en una, sin embargo, la similitud es solo del 86%. \u00bfQu\u00e9 pasa con dos oraciones que b\u00e1sicamente significan lo mismo?<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/f857f8f6629d7075d5f985bb7b3f2a16.js\"><\/script>\n\n\n\n<p>Estas oraciones solo comparten una palabra, sin embargo, se consideran un 96% similares, porque b\u00e1sicamente significan lo mismo.<\/p>\n\n\n\n<p>Si pasamos dos oraciones no relacionadas:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/a3d4e2a570353af79ab2fe6308c273e2.js\"><\/script>\n\n\n\n<p id=\"1332\">Como se esperaba, ligeramente por encima del 70%, pero si agregamos alg\u00fan tipo de conexi\u00f3n entre las dos oraciones:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/e99d0c09e54315aa0071d34045dc4056.js\"><\/script>\n\n\n\n<p>La similitud de coseno encuentra una relaci\u00f3n m\u00e1s fuerte entre las \u00faltimas dos oraciones debido a la conexi\u00f3n con Estados Unidos.<\/p>\n\n\n\n<p>Tambi\u00e9n, cabe se\u00f1alar que, dependiendo del modelo, la vectorizaci\u00f3n sem\u00e1ntica de texto a\u00fan funciona en idiomas diferentes:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/a971a2799ba133e6068196cd5fee87e0.js\"><\/script>\n\n\n\n<p id=\"9481\">Algunos modelos funcionan mejor que otros en su soporte de diferentes idiomas, estos se hicieron usando el modelo text-embedding-ada-002 de OpenAI.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"3786\">Buscando contenido similar<\/h1>\n\n\n\n<p id=\"e4f4\">Excelente, ahora sabemos c\u00f3mo hacerle una pregunta a ChatGPT, tambi\u00e9n sabemos c\u00f3mo crear incrustaciones vectoriales de texto, y ahora entendemos c\u00f3mo esos vectores pueden usarse con principios matem\u00e1ticos para comparar su similitud. Ahora nos adentraremos en el proceso de b\u00fasqueda de contenido similar. El proceso es simple, pero consideremos una cosa m\u00e1s. Crear incrustaciones para una larga lista de documentos es costoso en tiempo y dinero, por lo que deber\u00edamos encontrar una manera de crearlas solo una vez, o al menos solo tan a menudo como el contenido cambie. Dicho esto, el proceso deber\u00eda ser bastante simple:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1605\">Preparaci\u00f3n<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Recorrer la lista de todos tus documentos<\/li>\n\n\n\n<li>Obtener una incrustaci\u00f3n para cada documento<\/li>\n\n\n\n<li>Guardar la incrustaci\u00f3n junto con un puntero al documento correspondiente<\/li>\n\n\n\n<li>Persistir esta lista (en una base de datos vectorial, o en un dataframe de Pandas persistido)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"cb29\">En cada pregunta<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Obtener una incrustaci\u00f3n para la pregunta<\/li>\n\n\n\n<li>Recorrer la lista guardada de incrustaciones\/documentos<\/li>\n\n\n\n<li>Comparar la incrustaci\u00f3n del documento con la incrustaci\u00f3n de la pregunta<\/li>\n\n\n\n<li>Guardar la puntuaci\u00f3n de comparaci\u00f3n con el documento<\/li>\n\n\n\n<li>Ahora, tomar todos los documentos y filtrarlos bas\u00e1ndose en alg\u00fan umbral (>75% por ejemplo)<\/li>\n\n\n\n<li>Ordenar los que coincidan por la puntuaci\u00f3n<\/li>\n\n\n\n<li>Elegir el primero&#8230; y el documento probablemente contenga una respuesta a tu pregunta<\/li>\n<\/ul>\n\n\n\n<p>Para este ejercicio no usar\u00e9 una base de datos vectorial, aunque definitivamente es el camino a seguir para una implementaci\u00f3n en producci\u00f3n, en su lugar, simplemente tomar\u00e9 el camino f\u00e1cil y usar\u00e9 un dataframe de pandas.<\/p>\n\n\n\n<p>Vamos a a\u00f1adir pandas y numpy a nuestro archivo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pandas as pd<\/code><\/pre>\n\n\n\n<p id=\"02eb\">Y vamos a a\u00f1adir<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/94ffaafbe3a894cbe9bb2b44443c8793.js\"><\/script>\n\n\n\n<p id=\"f52c\">As\u00ed que, ahora tenemos un Dataframe con una columna: textos. Ahora moveremos la creaci\u00f3n de las incrustaciones a una funci\u00f3n que podamos llamar repetidamente. Esto es clave en este punto, ya que vamos a a\u00f1adir una nueva columna al dataframe llamada &#8220;embedding&#8221; que almacenar\u00e1 el resultado de llamar a la funci\u00f3n get_embedding para cada texto.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/9afbc51cdaee32b541764ad141cfd715.js\"><\/script>\n\n\n\n<p id=\"eced\">Como puedes ver, cada fila en el dataframe ahora tiene el vector que representa el texto. Ahora, necesitamos obtener una incrustaci\u00f3n para la pregunta:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>question = \"Is Peter a musician?\"<br>question_embedding = get_embedding(question)<\/code><\/pre>\n\n\n\n<p id=\"5992\">Y luego a\u00f1adir una nueva columna al dataset para almacenar la similitud entre el vector del texto y el vector de la pregunta.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/e20c0216422c8c2087f87c9678455f0b.js\"><\/script>\n\n\n\n<p>Genial, as\u00ed que ahora nuestro dataframe consiste en filas con el texto original, el vector del texto y la similitud con el vector de la pregunta. Probablemente podr\u00edamos simplemente revisar la lista y elegir la l\u00ednea m\u00e1s cercana, pero intentemos hacerlo en c\u00f3digo a ver si nos da una respuesta razonable.<\/p>\n\n\n\n<p>El siguiente paso es usualmente filtrar la lista para que para los siguientes pasos tratemos con un subconjunto m\u00e1s peque\u00f1o. Hacemos esto filtrando el dataframe por una similitud mayor a cierto umbral, en este caso elegimos el 80%.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/8aaac15f875d4a976dc6ae8bced51d05.js\"><\/script>\n\n\n\n<p id=\"4f7f\">Ya vemos que la lista se redujo, solo 5 filas cumplen con los criterios. El siguiente paso es ordenar las filas filtradas en orden de similitud y elegir la coincidencia superior:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/ab9466f3f2ed1afcdfd9f91c49ebb480.js\"><\/script>\n\n\n\n<p id=\"a71b\">\u00a1Excelente, usando las incrustaciones de OpenAI, hemos encontrado la respuesta a nuestra pregunta en la lista de documentos sin otra herramienta que puras matem\u00e1ticas!<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"f92e\">Finalmente, pediremos a ChatGPT que responda una pregunta basada en nuestro Contexto (RAG)<\/h1>\n\n\n\n<p id=\"4e6d\">Ahora tenemos todos los elementos que necesitamos para finalmente hacer que ChatGPT use nuestro contexto para responder la pregunta. Al inspeccionar la afirmaci\u00f3n que la matem\u00e1tica ayud\u00f3 a seleccionar, probablemente ya podemos adivinar la respuesta. Pero, en casos del mundo real, este podr\u00eda ser un documento muy largo, adem\u00e1s, &#8220;Pedro toca el clarinete&#8221; no es una respuesta directa a la pregunta. Para eso utilizaremos el Modelo de Lenguaje Grande ChatGPT que no solo es capaz de entender la pregunta y el contexto, sino tambi\u00e9n de generar una respuesta apropiada.<\/p>\n\n\n\n<p id=\"b741\">Y ahora, el momento de la verdad, obtendremos el valor de la respuesta m\u00e1s acertada que encontramos coincidiendo con la pregunta y lo pasaremos a la llamada de chat como contexto:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/catsdev\/630214b989dcb29b50310a6ee697d203.js\"><\/script>\n\n\n\n<p>Eso es lo que RAG significa realmente. Aumentar el contexto para que ChatGPT pueda responder una pregunta recuperando informaci\u00f3n utilizando datos vectorizados.<\/p>\n\n\n\n<p>Ahora, por supuesto, hay mucho m\u00e1s para crear una aplicaci\u00f3n a nivel de producci\u00f3n utilizando estas tecnolog\u00edas. Los modelos de incrustaci\u00f3n m\u00e1s nuevos crean vectores m\u00e1s grandes (mayor precisi\u00f3n, pero b\u00fasqueda m\u00e1s lenta), pero tambi\u00e9n permiten acortarlos, lo que se puede usar para hacer una b\u00fasqueda en dos pasos filtrando el conjunto total de documentos con un vector menos granular y luego usando el vector de mayor dimensi\u00f3n para el conjunto m\u00e1s peque\u00f1o. Solo he usado textos cortos aqu\u00ed, pero los mismos principios funcionan para documentos m\u00e1s grandes. Los documentos necesitar\u00e1n alg\u00fan procesamiento, como abrirlos (extraer texto de PDFs, etc.), fragmentar (dividir los documentos en unidades m\u00e1s peque\u00f1as, potencialmente superponiendo los fragmentos para evitar cortar el flujo), usar una base de datos vectorial, implementar b\u00fasquedas h\u00edbridas (palabras clave, sem\u00e1ntica, etc.).<\/p>\n\n\n\n<p>As\u00ed que, s\u00ed, hay mucho otro trabajo por hacer para llevar esta aplicaci\u00f3n a producci\u00f3n, pero espero que si has le\u00eddo hasta aqu\u00ed, tengas un mayor entendimiento de c\u00f3mo funciona RAG.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los Modelos de Lenguaje de Gran Tama\u00f1o (LLM, por sus siglas en ingl\u00e9s), especialmente aquellos del tipo &#8220;generativo&#8221;, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":9664,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[38],"tags":[78,32,85,79,59],"class_list":["post-9670","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology","tag-chatgpt","tag-inteligencia-artificial","tag-llm","tag-rag","tag-technology"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Desmitificando la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG): Una Gu\u00eda Paso a Paso para lograr ChatGPT con Contexto - El blog de Felipe<\/title>\n<meta name=\"description\" content=\"\u00a1Potencia tu chatbot de IA con un contexto m\u00e1s profundo! Esta gu\u00eda explora la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG), una t\u00e9cnica que desbloquea el potencial de ChatGPT para responder preguntas basadas en informaci\u00f3n relevante, no solo palabras clave. Sum\u00e9rgete en explicaciones paso a paso, ejemplos de c\u00f3digo y aplicaciones pr\u00e1cticas, y descubre c\u00f3mo RAG puede revolucionar las interacciones de tu chatbot. Aprende a aprovechar la comprensi\u00f3n del lenguaje de ChatGPT con el poder de la recuperaci\u00f3n de contexto, \u00a1y lleva tus conversaciones de IA al siguiente nivel!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Desmitificando la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG): Una Gu\u00eda Paso a Paso para lograr ChatGPT con Contexto - El blog de Felipe\" \/>\n<meta property=\"og:description\" content=\"\u00a1Potencia tu chatbot de IA con un contexto m\u00e1s profundo! Esta gu\u00eda explora la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG), una t\u00e9cnica que desbloquea el potencial de ChatGPT para responder preguntas basadas en informaci\u00f3n relevante, no solo palabras clave. Sum\u00e9rgete en explicaciones paso a paso, ejemplos de c\u00f3digo y aplicaciones pr\u00e1cticas, y descubre c\u00f3mo RAG puede revolucionar las interacciones de tu chatbot. Aprende a aprovechar la comprensi\u00f3n del lenguaje de ChatGPT con el poder de la recuperaci\u00f3n de contexto, \u00a1y lleva tus conversaciones de IA al siguiente nivel!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/\" \/>\n<meta property=\"og:site_name\" content=\"El blog de Felipe\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-19T19:59:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-02-19T19:59:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2024\/02\/image-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"AI\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"AI\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2024\\\/02\\\/19\\\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2024\\\/02\\\/19\\\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\\\/\"},\"author\":{\"name\":\"AI\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#\\\/schema\\\/person\\\/e32bfb69f0dcbed869e838474a34d240\"},\"headline\":\"Desmitificando la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG): Una Gu\u00eda Paso a Paso para lograr ChatGPT con Contexto\",\"datePublished\":\"2024-02-19T19:59:51+00:00\",\"dateModified\":\"2024-02-19T19:59:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2024\\\/02\\\/19\\\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\\\/\"},\"wordCount\":2422,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2024\\\/02\\\/19\\\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2024\\\/02\\\/image-2.png\",\"keywords\":[\"ChatGPT\",\"Inteligencia Artificial\",\"LLM\",\"RAG\",\"technology\"],\"articleSection\":[\"Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2024\\\/02\\\/19\\\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2024\\\/02\\\/19\\\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\\\/\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2024\\\/02\\\/19\\\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\\\/\",\"name\":\"Desmitificando la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG): Una Gu\u00eda Paso a Paso para lograr ChatGPT con Contexto - El blog de Felipe\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2024\\\/02\\\/19\\\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2024\\\/02\\\/19\\\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2024\\\/02\\\/image-2.png\",\"datePublished\":\"2024-02-19T19:59:51+00:00\",\"dateModified\":\"2024-02-19T19:59:52+00:00\",\"description\":\"\u00a1Potencia tu chatbot de IA con un contexto m\u00e1s profundo! Esta gu\u00eda explora la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG), una t\u00e9cnica que desbloquea el potencial de ChatGPT para responder preguntas basadas en informaci\u00f3n relevante, no solo palabras clave. Sum\u00e9rgete en explicaciones paso a paso, ejemplos de c\u00f3digo y aplicaciones pr\u00e1cticas, y descubre c\u00f3mo RAG puede revolucionar las interacciones de tu chatbot. Aprende a aprovechar la comprensi\u00f3n del lenguaje de ChatGPT con el poder de la recuperaci\u00f3n de contexto, \u00a1y lleva tus conversaciones de IA al siguiente nivel!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2024\\\/02\\\/19\\\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2024\\\/02\\\/19\\\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2024\\\/02\\\/19\\\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2024\\\/02\\\/image-2.png\",\"contentUrl\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2024\\\/02\\\/image-2.png\",\"width\":1024,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2024\\\/02\\\/19\\\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Desmitificando la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG): Una Gu\u00eda Paso a Paso para lograr ChatGPT con Contexto\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#website\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/\",\"name\":\"El blog de Felipe\",\"description\":\"De la abundancia del coraz\u00f3n...\",\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#organization\",\"name\":\"El blog de Felipe\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2019\\\/11\\\/cropped-caricatura_felipe.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2019\\\/11\\\/cropped-caricatura_felipe.jpg\",\"width\":1360,\"height\":598,\"caption\":\"El blog de Felipe\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#\\\/schema\\\/person\\\/e32bfb69f0dcbed869e838474a34d240\",\"name\":\"AI\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g\",\"caption\":\"AI\"},\"description\":\"Este art\u00edculo ha sido seleccionado y parcialmente escrito e ilustrado por Inteligencia Artificial (AI) basado en noticias disponibles.\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/author\\\/ai\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Desmitificando la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG): Una Gu\u00eda Paso a Paso para lograr ChatGPT con Contexto - El blog de Felipe","description":"\u00a1Potencia tu chatbot de IA con un contexto m\u00e1s profundo! Esta gu\u00eda explora la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG), una t\u00e9cnica que desbloquea el potencial de ChatGPT para responder preguntas basadas en informaci\u00f3n relevante, no solo palabras clave. Sum\u00e9rgete en explicaciones paso a paso, ejemplos de c\u00f3digo y aplicaciones pr\u00e1cticas, y descubre c\u00f3mo RAG puede revolucionar las interacciones de tu chatbot. Aprende a aprovechar la comprensi\u00f3n del lenguaje de ChatGPT con el poder de la recuperaci\u00f3n de contexto, \u00a1y lleva tus conversaciones de IA al siguiente nivel!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/","og_locale":"en_US","og_type":"article","og_title":"Desmitificando la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG): Una Gu\u00eda Paso a Paso para lograr ChatGPT con Contexto - El blog de Felipe","og_description":"\u00a1Potencia tu chatbot de IA con un contexto m\u00e1s profundo! Esta gu\u00eda explora la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG), una t\u00e9cnica que desbloquea el potencial de ChatGPT para responder preguntas basadas en informaci\u00f3n relevante, no solo palabras clave. Sum\u00e9rgete en explicaciones paso a paso, ejemplos de c\u00f3digo y aplicaciones pr\u00e1cticas, y descubre c\u00f3mo RAG puede revolucionar las interacciones de tu chatbot. Aprende a aprovechar la comprensi\u00f3n del lenguaje de ChatGPT con el poder de la recuperaci\u00f3n de contexto, \u00a1y lleva tus conversaciones de IA al siguiente nivel!","og_url":"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/","og_site_name":"El blog de Felipe","article_published_time":"2024-02-19T19:59:51+00:00","article_modified_time":"2024-02-19T19:59:52+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2024\/02\/image-2.png","type":"image\/png"}],"author":"AI","twitter_card":"summary_large_image","twitter_misc":{"Written by":"AI","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/#article","isPartOf":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/"},"author":{"name":"AI","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#\/schema\/person\/e32bfb69f0dcbed869e838474a34d240"},"headline":"Desmitificando la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG): Una Gu\u00eda Paso a Paso para lograr ChatGPT con Contexto","datePublished":"2024-02-19T19:59:51+00:00","dateModified":"2024-02-19T19:59:52+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/"},"wordCount":2422,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#organization"},"image":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2024\/02\/image-2.png","keywords":["ChatGPT","Inteligencia Artificial","LLM","RAG","technology"],"articleSection":["Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/","url":"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/","name":"Desmitificando la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG): Una Gu\u00eda Paso a Paso para lograr ChatGPT con Contexto - El blog de Felipe","isPartOf":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/#primaryimage"},"image":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2024\/02\/image-2.png","datePublished":"2024-02-19T19:59:51+00:00","dateModified":"2024-02-19T19:59:52+00:00","description":"\u00a1Potencia tu chatbot de IA con un contexto m\u00e1s profundo! Esta gu\u00eda explora la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG), una t\u00e9cnica que desbloquea el potencial de ChatGPT para responder preguntas basadas en informaci\u00f3n relevante, no solo palabras clave. Sum\u00e9rgete en explicaciones paso a paso, ejemplos de c\u00f3digo y aplicaciones pr\u00e1cticas, y descubre c\u00f3mo RAG puede revolucionar las interacciones de tu chatbot. Aprende a aprovechar la comprensi\u00f3n del lenguaje de ChatGPT con el poder de la recuperaci\u00f3n de contexto, \u00a1y lleva tus conversaciones de IA al siguiente nivel!","breadcrumb":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/#primaryimage","url":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2024\/02\/image-2.png","contentUrl":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2024\/02\/image-2.png","width":1024,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2024\/02\/19\/desmitificando-la-generacion-aumentada-por-recuperacion-rag-una-guia-paso-a-paso-para-lograr-chatgpt-con-contexto\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.pacasmayo.com\/felipe\/"},{"@type":"ListItem","position":2,"name":"Desmitificando la Generaci\u00f3n Aumentada por Recuperaci\u00f3n (RAG): Una Gu\u00eda Paso a Paso para lograr ChatGPT con Contexto"}]},{"@type":"WebSite","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#website","url":"https:\/\/blogs.pacasmayo.com\/felipe\/","name":"El blog de Felipe","description":"De la abundancia del coraz\u00f3n...","publisher":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.pacasmayo.com\/felipe\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#organization","name":"El blog de Felipe","url":"https:\/\/blogs.pacasmayo.com\/felipe\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#\/schema\/logo\/image\/","url":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2019\/11\/cropped-caricatura_felipe.jpg","contentUrl":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2019\/11\/cropped-caricatura_felipe.jpg","width":1360,"height":598,"caption":"El blog de Felipe"},"image":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#\/schema\/person\/e32bfb69f0dcbed869e838474a34d240","name":"AI","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g","caption":"AI"},"description":"Este art\u00edculo ha sido seleccionado y parcialmente escrito e ilustrado por Inteligencia Artificial (AI) basado en noticias disponibles.","url":"https:\/\/blogs.pacasmayo.com\/felipe\/author\/ai\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/posts\/9670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/comments?post=9670"}],"version-history":[{"count":4,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/posts\/9670\/revisions"}],"predecessor-version":[{"id":9679,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/posts\/9670\/revisions\/9679"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/media\/9664"}],"wp:attachment":[{"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/media?parent=9670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/categories?post=9670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/tags?post=9670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}