Anteriormente, mostramos cómo utilizar las capacidades RAG de Couchbase a través de una aplicación Python que permite al usuario 'chatear' con su PDF o con X. Es simple de construir, pero ¿podemos construirlo más simple? He estado jugando mucho con Couchbase Shell recientemente y debería permitirme hacer algo similar.
Establecer un ámbito y una colección
Supongo que ya conoce Shell de Couchbase (cbsh), y tener un clúster y un modelo configurados.
Cree y seleccione un ámbito y una colección y, a continuación, cree un índice primario:
|
1 2 3 4 5 |
> ámbitos crear pdf > cb-env alcance pdf > colecciones crear pdf > cb-env colección pdf > consulta "CREATE PRIMARY INDEX ON `default`:`cbsh`.`pdf`.`pdf`" |
Convertir un PDF en texto fragmentado
Existe una gran variedad de herramientas que permiten convertir un pdf en texto. En la mayoría de las distribuciones de Linux, encontrarás pdftotext.
|
1 |
> pdftotext ~/monopolioInstrucción.pdf |
Esto creará una versión de texto del archivo con la misma ruta, pero con un .txt extensión.
Con Nushell (cbsh está basado en Nushell) es fácil dividir texto gracias al comando split. El problema es encontrar el delimitador correcto que necesitas para trocear el archivo. Afortunadamente, soporta cadenas multilínea, así que copié y pegué texto del archivo entre dos párrafos. Sin embargo, deberías poder hacer algo más sofisticado utilizando regex. Esa es la diferencia entre el material del blog y la producción 😇.
|
1 2 3 |
> abra ~/monopolioInstrucción.txt |dividir fila " ::: ::: "|envolver texto |
Esto te dará una tabla de cadenas de texto. Para importarla a Couchbase las envolvemos en un campo de texto, en un objeto JSON de contenido, añadimos un UUID generado aleatoriamente y upsertamos el resultado.
|
1 2 3 |
> abra ~/monopolioInstrucción.txt |dividir fila " ::: ::: "|envolver texto |envolver contenido | cada { insertar id { al azar uuid } } | doc upsert |
El siguiente paso es crear incrustaciones, o representaciones vectoriales del texto:
|
1 |
> consulta "SELECT meta().id as id, p.* from pdf as p" | envolver contenido| vector enriquecer-doc texto | doc upsert |
A continuación, cree el índice de búsqueda vectorial. Aquí se llama pdf, indexa el campo textVectorcrear un vector de 1536 dimensiones y utilizar l2_norma para el algoritmo de similitud, ya que es el predeterminado.
|
1 |
> vector crear-índice pdf textVector 1536 |
He importado las reglas del Monopoly y pregunto cómo salir de la cárcel. En el ejemplo original, teníamos una respuesta con contexto y otra sin él.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
> pregunte a "cómo salir de la cárcel" Si usted o alguien usted conozca es en cárcel y necesita a sea publicado, aquí son algunos general pasos a toma: Póngase en contacto con a abogado: Si usted tienen legal representación o conozca de a abogado que puede ayuda con su caso, llegar a fuera a ellos para asistencia en navegar por el legal proceso. Obtenga a fianza bono: En muchos casos, particulares puede sea publicado de cárcel por publicación fianza. Este requiere pagando a a configure importe de dinero a el tribunal, que es normalmente devuelto una vez el individual asiste a todos obligatorio tribunal fechas. Visite tribunal audiencias: EnEs importante cumplir todos los requisitos del tribunal, incluida la asistencia a las audiencias programadas y el cumplimiento de las condiciones de libertad establecidas por el tribunal. Busque apoyo: Considere la posibilidad de acudir a familiares, amigos u organizaciones locales que puedan proporcionarle ayuda u orientación durante este difícil momento. Tenga en cuenta que el proceso de excarcelación puede variar en función de las circunstancias específicas del caso y de la jurisdicción. Es's siempre mejor a consulte con legal profesionales para personalizado consejo y asistencia. |
Y con contexto:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
> deje pregunta = "cómo salir de la cárcel"; vector enriquecer-texto $pregunta | vector busque en pdf textVector | seleccione id |doc consiga| seleccione contenido.texto | pregunte a $pregunta 👤 Laurent Doguin 🏠 capella en ☁️ cbsh.gitlog.pdf > deje pregunta = "cómo salir de la cárcel"; vector enriquecer-texto $pregunta | vector busque en pdf textVector | seleccione id |doc consiga| seleccione contenido.texto | pregunte a $pregunta Inserción lote 1/1 Usted puede consiga fuera de cárcel por siguiente estos métodos: **Rollo Dobles:** Si usted rollo a doble con el blanco dados en cualquier de su siguiente tres gira, usted puede inmediatamente mover fuera de Cárcel. Usted entonces mover el número de espacios se muestra por su dobles rollo. **"Salga gratis de la cárcel" Tarjeta:** Si usted tienen a "Salga gratis de la cárcel" tarjeta, usted puede utilice it a consiga fuera de Cárcel sin rodante dobles. Este tarjeta puede sea obtenido por compras it de otro jugador o dibujo it de el Chance o Comunidad Pecho tarjetas. **Pagar Fino:** Usted puede también elija a pagar a fino de $50 antes de usted rollo el dados en o bien de su siguiente dos gira. En pagando a el fino, usted son gratis a mover y continuar jugando a. Recuerde, si usted do no rollo dobles por su tercera gire a o utilice a "Salga gratis de la cárcel" tarjeta, usted debe pagar el $50 fino a consiga fuera de Cárcel. |
Vamos a simplificar esto poniendo todo en un script. Este es el contenido de miScript.nu:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
def initRAGPipeline [] { ámbitos crear pdf cb-env alcance pdf colecciones crear pdf cb-env colección pdf consulta "CREATE PRIMARY INDEX ON `default`:`cbsh`.`pdf`.`pdf`" vector crear-índice pdf textVector 1536 } def storeRAGDoc [] { envolver texto |envolver contenido | cada { insertar id { al azar uuid } } | doc upsert consulta "SELECT meta().id as id, p.* from `pdf` as p" | envolver contenido| vector enriquecer-doc texto | doc upsert } def miPregunta [$pregunta: cadena] { deje norag = pregunte a $pregunta deje trapo = vector enriquecer-texto $pregunta | vector busque en pdf textVector | seleccione id |doc consiga| seleccione contenido.texto | pregunte a $pregunta {"trapo":$trapo, "norag":$norag} } |
Puedes crear el archivo de script y luego llamar a esas funciones:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
> fuente ./ragDemo/ragScript.nu > initRAGPipeline > abra monopolioInstrucción.txt |dividir fila " ::: ::: "| tienda > miPregunta "cómo salir de la cárcel" Inserción lote 1/1 ╭───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ trapo │ Aquí son el vías a consiga fuera de cárcel en el juego de Monopoly: │ │ │ │ │ │ 1. **Rollo Dobles:** En más común camino a consiga fuera de cárcel es por rodante dobles en su gire a. Si usted rollo │ │ │ dobles con el regular blanco dados en cualquier de su siguiente tres gira después de en enviado a cárcel, usted puede inmediatamente mover su ficha fuera de cárcel y avance el correspondiente │ │ │ número de espacios. Recuerde que usted puede sólo utilice el blanco dados para este propósito. │ │ │ │ │ │ 2. **Utilizando "Salga gratis de la cárcel" Tarjeta:** Si usted tienen a "Salga gratis de la cárcel" tarjeta, usted puede │ │ │ utilice it a consiga fuera de cárcel sin rodante dobles. Simplemente presente el tarjeta a el Banquero a consiga fuera de cárcel para gratis. En tarjeta es entonces devuelto a el fondo de el cubierta. │ │ │ │ │ │ 3. │ │ │ **Comprar el Tarjeta:** Si otro jugador tiene a "Salga gratis de la cárcel" tarjeta y es dispuesto a vender it, usted puede comprar el tarjeta de ellos en a mutuamente de acuerdo-en precio. │ │ │ Este permite usted a consiga fuera de cárcel incluso si usted don't tiene la tarjeta usted mismo. │ │ │ │ │ │ 4. **Paga la multa:** Si no sacas dobles en tres turnos o no tienes un "Salir de │││. │ │ Carta "Cárcel Libre", debes pagar una multa de $50 al Banco antes de tirar los dados en cualquiera de tus dos próximos turnos. Una vez pagada la multa, serás liberado inmediatamente de la │││carcel. │ │ cárcel y puede mover su ficha según la tirada de dados. │ │ │ │ │ │ Estas son las cuatro formas principales de salir de la cárcel en Monopoly. │ │ norag │ Si usted o alguien que conoce está actualmente en la cárcel y busca salir en libertad, estos son algunos pasos generales a tener en cuenta: │ │ │ │ │ │ 1. Póngase en contacto con un abogado: Un abogado penalista puede │ │ │ proporcionar orientación sobre las opciones legales y ayudar a navegar por el proceso legal para la liberación. │ │ │ │ │ │ 2. Asistir a las vistas judiciales: Es importante asistir a todas las vistas judiciales y seguir cualquier │ │ │ condiciones establecidas por el tribunal para demostrar la cooperación con el sistema judicial. │ │ │ │ │ │ 3. Considere la posibilidad de una fianza: Si la fianza es una opción, es posible que pueda pagar una cantidad fija para ser liberado de │ ││ cárcel en espera de juicio. Si no puede hacer frente al importe de la fianza, puede solicitar la ayuda de un agente de fianzas. │ │ │ │ │ │ 4. Busque opciones alternativas: En función de las circunstancias de su │ ││ caso, puede haber opciones alternativas para la puesta en libertad, como servicios previos al juicio, programas de desvío o libertad vigilada. │ │ │ │ │ │ 5. Siga los consejos legales: Es fundamental seguir el │ │ │ asesoramiento de su asesor jurídico y cumpla todos los requisitos legales para aumentar las posibilidades de éxito de la liberación. │ │ │ │ │ │ It's importante a nota que el proceso de En fuera de │ │ │ cárcel puede variar dependiendo en el específico circunstancias de el caso y el leyes en su jurisdicción. Para personalizado orientación, it's recomendado a hable con a abogado o │ │ │ legal profesional especializado en criminal ley. │ ╰───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ |
Aquí puedes ver el mismo tipo de resultado que conseguimos en la demo de Python RAG, pero esta vez usando Couchbase Shell. Debería ser más fácil de manipular, cambiar o extender, porque no necesitas desplegar una aplicación o saber Python. Sin embargo, será menos flexible que lo que puedes conseguir con Python y Langchain.
Si esto te interesa, permanece atento: ¡más contenido sobre IA y Couchbase Shell en camino!
-
- Más información Shell de Couchbase
- y Búsqueda vectorial en Couchbase capacidades