Pinecone y ChatGPT | Tutorial Base de Datos Vectorial desde 0, PreguntaPDF Parte 2

Поделиться
HTML-код
  • Опубликовано: 23 дек 2024

Комментарии • 90

  • @RobertVirona-l1g
    @RobertVirona-l1g 21 день назад +1

    Mil gracias por tu aporte

    • @NechuBM
      @NechuBM  13 дней назад

      ¡Un placer!

  • @donaldmontoya1491
    @donaldmontoya1491 Год назад +2

    Gracias Nechu por compartir tus conocimientos, este video esta genial y bien explicado, se comprende facilmente

    • @NechuBM
      @NechuBM  Год назад

      ¡Muchas gracias por el comentario! Me encanta saber que encontraste las explicaciones claras y fáciles de comprender. Nos vemos en los próximos vídeos

  • @TheCiubux
    @TheCiubux 15 дней назад +1

    Gracias, me ha ayudado bastante

    • @NechuBM
      @NechuBM  13 дней назад

      ¡Qué bueno! Nos vemos en los próximos vídeos.

  • @carlosbedoya8793
    @carlosbedoya8793 8 месяцев назад +1

    Hola Nechu, de antemano muchas gracias por sus aportes.
    Una inquietud:
    En la linea 51
    docs = vstore.similarity_search(user_question,3)
    Hay alguna manera de traer no solo los textos resultantes de la busqueda, sino tambien los Metadatos o los campos en donde se almacena la fuente?
    Si se han subido varios pdf sería apropiado saber de cual de todos se están extrayendo los chunks.
    Revisando la documentación de Langchain veo que es posible crear filtros para limitar las búsquedas pero no veo aquí cómo se podría aplicar.
    Gracias por la respuesta.

    • @NechuBM
      @NechuBM  8 месяцев назад +2

      Te presento varias opciones según las necesidades de tu caso de uso con referencias:
      1. En la sección 1C del notebook titulada ´buscar vectores´, si quieres filtrar en base a los metadatos solo tienes que modificar la query de la siguiente forma:
      index.query(
      vector=[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1],
      filter={
      "genre": {"$eq": "documentary"},
      "year": 2019
      },
      top_k=1,
      include_metadata=True
      )
      docs.pinecone.io/guides/data/filtering-with-metadata
      2. Si quieres realizar preguntas y que la búsqueda de documentos esté acotada a un conjunto específico utiliza el siguiente filtro:
      docs = vstore.similarity_search(query, {"key":"value"})
      github.com/langchain-ai/langchain/issues/1838
      3. Si lo que buscas es que la respuesta de la búsqueda en Pinecone te devuelva los metadatos, comprueba la variable 'docs' (el resultado de la búsqueda) donde podrás encontrarlos, si no es así asegúrate de añadirlos al cargar los vectores:
      metadatas = [{"page": i} for i in range(len(texts))]
      docsearch = Pinecone.from_texts(
      texts,
      embedding_openai,
      index_name=index_name,
      metadatas=metadatas,
      namespace=namespace_name,
      )
      github.com/langchain-ai/langchain/discussions/10063
      ¡Gracias por el apoyo y el mensaje!

  • @Salva416
    @Salva416 6 месяцев назад +1

    Una duda. Cómo haces la equivalencia entre embeddings-dimensiones para que cuadren los embeddings generados con las dimensiones que acepta pinecone. Desde la consola si agrego 300 y acepta 400 me lanza error

    • @Salva416
      @Salva416 6 месяцев назад +1

      Vi que le comenteaste a otra persona, leí enlace y me quedó claro

    • @NechuBM
      @NechuBM  5 месяцев назад

      ¡Espectacular! Es bueno saber que los comentarios tambien sirven como una valiosa fuente de ayuda y conocimiento.

  • @juanjcarvajalg
    @juanjcarvajalg 5 месяцев назад +1

    Gracias @nechu excelente conocimiento, enseñanza y contenido. 100% recomendado

    • @NechuBM
      @NechuBM  4 месяца назад

      ¡Muchas gracias! Espero que disfrutes y aprendas mucho con el resto de vídeos

  • @candangasrodriguito5120
    @candangasrodriguito5120 Год назад +1

    Que genial. .! Espero el video de Chroma en. Buen contenido.

    • @NechuBM
      @NechuBM  Год назад +1

      Aquí tienes el nuevo vídeo con ChromaDB: ruclips.net/video/udexkMXDX2U/видео.html
      ¡Gracias por el apoyo!

  •  Год назад +1

    Gracias por tus vídeos!
    Has probado a usar pgvector de postgres para guardar los datos?

    • @NechuBM
      @NechuBM  Год назад +1

      He utilizado Pinecone y ChromaDB ruclips.net/video/udexkMXDX2U/видео.html Otro base de datos vectorial que quiero probar es Weaviate pero pgvector aún no lo he trabajado ¿la recomiendas?
      ¡Gracias por el apoyo!

  • @vm8519
    @vm8519 10 месяцев назад +1

    nechu, me salio un error en el notebook que aun no entiendo como resolver, tu me puede ayudar? por favor
    AttributeError: type object 'Pinecone' has no attribute 'from_documents'

    • @ComercioymarketingEs
      @ComercioymarketingEs 10 месяцев назад +1

      Yo tengo el mismo problema y tampoco encuentro la solución. Ayuda!!!!

    • @NechuBM
      @NechuBM  10 месяцев назад

      La librería Pinecone ha realizado unas actualizaciones del código. Para que todo siga funcionando como en el vídeo, a la hora de instalar especifica la versión de Pinecone que quieres. En este caso escribimos lo siguiente: pinecone-client==2.2.4
      He lanzado el notebook entero y ha funcionado sin problema.

    • @ErickAguilar-ow7qp
      @ErickAguilar-ow7qp 8 месяцев назад

      @@NechuBM Un par de detalles pues en la ultima version de pinecone dashboard al crear la api_key no muestra el enviroment y al ejecutar la lsita pinecone.list_indexes() se muestra en vacio.

    • @NechuBM
      @NechuBM  8 месяцев назад

      @@ErickAguilar-ow7qp Para encontrar el environment solo tienes que ir a la pestaña indices en el portal web. Una vez ahí bajo el nombre del índice te indica la región.
      Si te devuelve una lista vacía al ejecutar pinecone.list_indexes() significa que el código ha funcionado pero no tienes ningún índice creado, comprueba esto último y vuelve a ejecutar el código.

    • @ErickAguilar-ow7qp
      @ErickAguilar-ow7qp 8 месяцев назад

      ​@@NechuBM Estaba haciendo las pruebas actualizando la región de aws(que por lo visto coincide con el env9iroment) y lo supera sin problemas , se verifico el index "taller" previamente creado en el dashboard pero al correr el codigo pinecone.list_indexes() muestra el siguiene error, a que crees que se deba ?
      WARNING:urllib3.connectionpool:Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NameResolutionError(": Failed to resolve 'controller.us-east-1.pinecone.io' ([Errno -2] Name or service not known)")': /databases
      WARNING:urllib3.connectionpool:Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NameResolutionError(": Failed to resolve 'controller.us-east-1.pinecone.io' ([Errno -2] Name or service not known)")': /databases
      WARNING:urllib3.connectionpool:Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NameResolutionError(": Failed to resolve 'controller.us-east-1.pinecone.io' ([Errno -2] Name or service not known)")': /databases
      ---------------------------------------------------------------------------
      gaierror Traceback (most recent call last)
      /usr/local/lib/python3.10/dist-packages/urllib3/connection.py in _new_conn(self)
      202 try:
      --> 203 sock = connection.create_connection(
      204 (self._dns_host, self.port),
      25 frames
      gaierror: [Errno -2] Name or service not known
      The above exception was the direct cause of the following exception:
      NameResolutionError Traceback (most recent call last)
      NameResolutionError: : Failed to resolve 'controller.us-east-1.pinecone.io' ([Errno -2] Name or service not known)
      The above exception was the direct cause of the following exception:
      MaxRetryError Traceback (most recent call last)
      /usr/local/lib/python3.10/dist-packages/urllib3/util/retry.py in increment(self, method, url, response, error, _pool, _stacktrace)
      513 if new_retry.is_exhausted():
      514 reason = error or ResponseError(cause)
      --> 515 raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]
      516
      517 log.debug("Incremented Retry for (url='%s'): %r", url, new_retry)
      MaxRetryError: HTTPSConnectionPool(host='controller.us-east-1.pinecone.io', port=443): Max retries exceeded with url: /databases (Caused by NameResolutionError(": Failed to resolve 'controller.us-east-1.pinecone.io' ([Errno -2] Name or service not known)"))

  • @AlexIpiales-nt1xu
    @AlexIpiales-nt1xu 3 месяца назад

    Hola, muchas gracias por la explicación y el conocimiento impartido es de gran ayuda, quería saber si es posible guardar el contexto o historial de la conversación, con el fin de realizar preguntas y tener una mejor interacción y no volver a escribir las preguntas completas.

    • @NechuBM
      @NechuBM  3 месяца назад

      ¡Gracias por tu comentario! ¿Te refieres a guardar un historial de preguntas y respuestas para poder revisarlas más tarde, o te gustaría tener la capacidad de continuar una conversación de manera dinámica, construyendo a partir de respuestas anteriores sin tener que repetir el contexto cada vez? Ambas opciones son posibles, pero funcionan de maneras diferentes.

  • @donaldmontoya1491
    @donaldmontoya1491 Год назад +1

    Hola Nechu,
    Una consulta esta linea de codigo al ejecutarla me deberia regresar un resultado vstore.similarity_search(pregunta, 3) en caso de estar en el documento caso contrario enviaria [ ]. Observo que aunque tenga la base de datos de Pinecone vacia siempre responde las preguntas que haga.
    Aunque tenga datos en la Pinecone siempre vstore.similarity_search(pregunta, 3) devuelve vacio [ ]

    • @NechuBM
      @NechuBM  Год назад

      Para entender mejor por qué responde a la pregunta sin pasar contexto adicional es bueno analizar el prompt que le enviamos al modelo cuando utilizamos LangChain. Lo puedes encontrar en este enlace: github.com/langchain-ai/langchain/blob/master/libs/langchain/langchain/chains/retrieval_qa/prompt.py
      Ocurre que, aunque no le pasemos contexto, el modelo intenta responder con el conocimiento que tiene.
      Si para tu caso de uso realmente quieres que esto no ocurra lo mejor es cambiar el prompt base que utiliza LangChain. Para hacer esto aquí tienes un ejemplo con código: github.com/langchain-ai/langchain/discussions/9818
      Por otro lado el funcionamiento actual de vstore.similarity_search(pregunta, 3) es el de devolver los N vectores más similares. Para Pinecone o Chroma no existe un límite de similitud a partir de cual deje de devolver resultados. Aunque la puntuación de similitud sea muy baja seguirá devolviendo los N más similares.
      Por lo tanto, si no te devuelve ningún resultado, comprueba que tienes todo bien configurado.
      Con la librería FAISS si puedes utilizar el parámetro score_threshold para limitar los resultados a partir de cierto valor de similitud.

    • @donaldmontoya1491
      @donaldmontoya1491 Год назад +1

      Gracias@@NechuBM
      Lo que en realidad quiero es que las respuestas sean concretamente del archivo u archivos pdf que se suban a la base de datos.

    • @NechuBM
      @NechuBM  Год назад

      ​@@donaldmontoya1491 Pues entonces el enlace que compartí anteriormente es donde encontraras la solución: github.com/langchain-ai/langchain/discussions/9818
      Modifica el prompt base para que solo responda en caso de que la información esté en el contexto que le compartes con la pregunta.

    • @donaldmontoya1491
      @donaldmontoya1491 Год назад +1

      Gracias@@NechuBM

  • @adalbot
    @adalbot Год назад +2

    Hola, excelente enseñanza, en el video anterior: preguntaPDF | Pregunta a tu PDF con ChatGPT y Langchain - Tutorial, no empleas pinecone y funciona para pdf largos, cuentame el valor agragado de pinecone(es pago). Saludos

    • @NechuBM
      @NechuBM  Год назад +2

      La diferencia no tiene que ver con el tamaño de los documentos, ambos trabajan con documentos grandes. La diferencia es que en el primer vídeo cada vez que accedas a la plataforma tienes que subir el documento (incluso cuando refrescas la página).
      Gracias a Pinecone almacenas los vectores independientemente de la aplicación y por lo tanto podrás acceder de nuevo al documento sin tener que volver a procesarlo y desde cualquier lugar.
      Imagínate que estás haciendo un trabajo para la universidad, ¿te pones a escribir en Word y cuando termines que haces? ¿Lo guardas para poder acceder más tarde o sales sin guardar y lo vuelves a escribir después?
      En el taller no tenemos que pagar por utilizar Pinecone ya que con la capa gratuita es suficiente. De todos modos, en los próximos días veremos una alternativa open-source y gratuita que se llama ChromaDB, stay tunned.

    • @adalbot
      @adalbot Год назад +1

      @@NechuBM gracias!

    • @NechuBM
      @NechuBM  Год назад

      @@adalbot Para eso estamos

    • @NechuBM
      @NechuBM  Год назад

      Aquí tienes una alternativa a Pinecone, una base de datos de código abierto y 'gratuita', ChromaDB: ruclips.net/video/udexkMXDX2U/видео.html

  • @donaldmontoya1491
    @donaldmontoya1491 Год назад

    Nechu, porque razon será que no puedo ver el contenido de los vectores dentro de la consola de Pinecone.
    En Vector Count tengo 7 pero no puedo visualizar su contenido como tu los muestras en el video. Será que tengo que actualizarme a pago?
    He realizado el ejercicio varias veces borrando el contenido del index (taller) y vuelto a cargar pero sigo sin poder visualizarlos (en VECTOR COUNT tengo 7) en la consola de Pinecone, será por esa misma razon que no obtengo datos con vstore.similarity_search(pregunta, 3).
    Gracias de antemano por tu amabilidad de responder

    • @rubenev
      @rubenev Год назад

      si, algunas de las funciones ya no están disponibles para la versión gratis de pinecone, eso aparece en los mensajes de error, pero parece que no afecta en el proceso completo

    • @donaldmontoya1491
      @donaldmontoya1491 Год назад

      Gracias @@rubenev

    • @NechuBM
      @NechuBM  11 месяцев назад +1

      Acabo de ejecutar el código tal cual está en el notebook y no me da ninguno de los problemas que explicas. Al acceder al portal de Pinecone se muestran los vectores que añadí y tengo la versión gratuita. Por lo tanto, parece que la causa del problema es otra.
      Comprueba las siguientes opciones:
      • Que has pinchado en la pestaña de Indexes y no de Collections en el portal de Pinecone.
      • No estas utilizando ningún ‘Namespaces’. En el portal selecciona el índice y comprueba el número de namespaces (normalmente solo 1, el Default)
      • Es el índice y la cuenta correctos, cuando probamos con varias cuentas podemos acabar liándonos.
      ¡Feliz año nuevo @donaldmontoya1491 @rubenev!

    • @donaldmontoya1491
      @donaldmontoya1491 11 месяцев назад +1

      Gracias @@NechuBM
      No se que habra sucedido pero hoy entre a Pinecone y puedo visualizar los vectores sin haber realizado nada.
      Igualmente para ti @NechuBM que tengas un año lleno de salud y exitos en todo lo que hagas. Feliz y Prospero año 2024, Dios este contigo😇

    • @NechuBM
      @NechuBM  11 месяцев назад

      ¡Muchas gracias@@donaldmontoya1491! A disfrutar de la programación

  • @WillyMendoza-w4y
    @WillyMendoza-w4y 7 месяцев назад +1

    Hola Nechu, muchas gracias por tu video. Te quiero pedir un favor, no me queda claro cómo calcular el tamaño de los chunks y overlaps. Tú lo tieness en 800 y 100 caracteres. Pero estos valores tienen alguna explicación o forma de calcular? Mi índice de Pinecone tiene dimesiones de 1536 y el tuyo es de 384. Significa que mis chunks pueden ser de 3200 con 400 de overlap?

    • @NechuBM
      @NechuBM  6 месяцев назад

      La dimensión de los vectores de embedding y el tamaño del chunk no están directamente relacionados.
      El tamaño de los vectores de embedding determina el número de dimensiones que tendrá el vector. Cuanto mayor sea el número de dimensiónes, en general, mayor será la calidad del embedding, ya que el vector contendrá más información. Sin embargo, los modelos que generan vectores más grandes requieren más procesamiento y potencia de cómputo, lo que los hace más costosos. Por lo tanto, debes evaluar si el costo de generar vectores de mayores dimensiones está justificado por el beneficio que aportan.
      Por otro lado, están los chunks, que representan la forma en que dividimos el texto. Esto variará según el tipo de documentos con los que estemos trabajando, pueden ser documentos legales, recetas, facturas, etc. Cada tipo de documento tendrá una estructura diferente y, por lo tanto, un tamaño de chunk diferente. El objetivo del chunk es dividir el documento en partes coherentes, por ejemplo, si estás trabajando con recetas de cocina, querrás que los ingredientes y las instrucciones de preparación estén en el mismo chunk para evitar mezclarlos con otros ingredientes de diferentes recetas.
      Aquí tienes un artículo donde explican en detalle cómo definir el tamaño de los chunks: www.pinecone.io/learn/chunking-strategies/

  • @adalbot
    @adalbot Год назад +1

    Queria enviar las repuesta a washap, existe alguna alternativa libre para python, distinto a meta, twilio, como baileys que usan en java?...o se podria implementar baileys con python?

    • @NechuBM
      @NechuBM  Год назад

      Puedes probar la librería pywhatkit para enviar mensajes a What’s App con Python. Si quieres crear un bot automatizado con notificación te recomiendo explorar Telegram o Discord, permiten una integración más sencilla para este tipo de desarrollos.

  •  5 месяцев назад

    En pinecone no dan ya la variable environment desde API Keys, agradezco ayuda

    •  5 месяцев назад

      En el minuto 8:56 la interface de api Key no es igual, por tanto la función de conexión tampoco, me encanta el vídeo pero estoy atrancado ahí. Muchas gracias

    • @NechuBM
      @NechuBM  4 месяца назад

      En la nueva versión de Pinecone ya no hace falta la variable environment. Puedes utilizar el siguiente código para conectarte:
      from pinecone.grpc import PineconeGRPC as Pinecone
      from pinecone import ServerlessSpec
      pc = Pinecone(api_key='YOUR_API_KEY')
      Y luego al crear el índice indicas la región y la nube que quieres utilizar:
      pc.create_index(
      name=index_name,
      dimension=2,
      metric="cosine",
      spec=ServerlessSpec(
      cloud='aws',
      region='us-east-1'
      )
      )
      Estoy preparando un notebook actualizado para la nueva versión de Pinecone, lo compartiré próximamente.

    • @NechuBM
      @NechuBM  4 месяца назад

      Aquí tienes un notebook con la nueva versión de Pinecone: colab.research.google.com/drive/18TA2N2_85RDlK9sSJNBVwElm8duPHg0M

  • @edustreamimg
    @edustreamimg 2 месяца назад +1

    Y como se haria n lugar de texto con audio?

    • @NechuBM
      @NechuBM  2 месяца назад +1

      Funciona de manera similar a como lo harías con texto. En lugar de utilizar un modelo que convierte texto a vectores/embeddings, necesitas uno que procese audio y lo transforme en vectores/embeddings. Un buen ejemplo es el modelo facebook/wav2vec2-base, que puedes encontrar en Hugging Face. Este modelo convierte grabaciones de voz en vectores/embeddings, lo que permite trabajar con el audio de la misma manera que vemos en el vídeo.

  • @cvaug6958
    @cvaug6958 4 месяца назад +1

    Hola, me parece muy interesante tu video y entiendo la lógica de lo que haces. Pero la verdad no se por donde empezar y es la primera vez que veo esto de los notebooks, tienes algún video tutorial de cómo usar los notebooks que compartes? He visto tus videos y no encuentro nada. Disculpa si es algo muy básico pero me gustaría aprender y entender . gracias

    • @NechuBM
      @NechuBM  3 месяца назад +1

      Claro, aquí te dejo algunos enlaces para que entiendas cómo funcionan los notebooks, una herramienta muy útil en programación. Si tienes alguna pregunta, no dudes en dejarla en los comentarios:
      ruclips.net/video/uiF8mzvzi74/видео.html
      ruclips.net/video/UeQdaqqdogE/видео.html

  • @javibautista90
    @javibautista90 Год назад +2

    Geniallll!!!!! Podria hacer lo mismo pero con otra IA por ejemplo de Hughing Face?? Necesito hacer eso mismo con algo open source o que sea mas económico

    • @NechuBM
      @NechuBM  Год назад

      ¡¡Gracias!! Claro, puedes reemplazar ChatGPT con modelos Open-Source, te comparto varias alternativas que te pueden interesar:
      Despliegue local: ruclips.net/video/tCFDPW2ctgI/видео.html
      Despliegue en HuggingFace: ruclips.net/video/kp-UCfxTEoY/видео.html
      Despliegue en AWS Sagemaker: ruclips.net/video/hnm4UhieqcU/видео.html

  • @colintony4990
    @colintony4990 Год назад +1

    ¿Esto tambien limita a contestar solo con los PDFs? , es decir , si le pregunto que es SQL contestará la pregunta o me dira que no tiene informacion , Buen video.

    • @NechuBM
      @NechuBM  Год назад

      He probado con preguntas genéricas y si son muy genéricas si responde. Cuando preguntas detalles más precisos o información más concreta es cuando responde que no tiene información suficiente en el contexto. Lo mejor es probar según tu caso de uso y analizar los resultados.
      Tras este análisis si no estás del todo contento con los resultados de ChatGPT y realmente quieres que no te responda si no tiene información tienes dos opciones. Primero es cambiar el prompt para insistir a ChatGPT que si no aparece información en el contexto no responda.
      La otra opción es analizar los resultados que devuelve la búsqueda de vectores similares y si los 3 vectores que devuelve no se parecen en nada a la pregunta devuelves una respuesta del estilo ‘no tengo información suficiente’ sin ni siquiera pasárselo a ChatGPT.

  • @JesusCendejas-uv1xr
    @JesusCendejas-uv1xr 11 месяцев назад +1

    Excelente video. Pregunta se puede usar pinecone como memoria ?

    • @NechuBM
      @NechuBM  11 месяцев назад

      ¡Muchas gracias! ¿A qué te refieres con memoria?
      Pinecone es una base de datos vectorial y funciona como componente externo al modelo. Podemos utilizarlo, como hemos visto en el vídeo, para crear una ‘memoria’ de documentos a los que acceder cuando realizamos una pregunta.

  • @aquinobritezz
    @aquinobritezz Год назад +1

    Excelente!!! Pienso que seria útil saber que de documento pdf extrae la respuesta.

    • @NechuBM
      @NechuBM  Год назад

      Siii, los tienes en la descripción del vídeo. Adicionalmente los añado aquí:
      Málaga CF: preguntapdf.s3.eu-south-2.amazonaws.com/la-rosaleda_v3.pdf
      Guía México: preguntapdf.s3.eu-south-2.amazonaws.com/GuiaViajeMexicoDF.pdf

  • @paulodmanace4812
    @paulodmanace4812 Год назад

    Hola, muy buen tutorial. Gracias!

    • @NechuBM
      @NechuBM  Год назад

      ¡Muchas gracias!

  • @dslandresearch
    @dslandresearch Год назад +2

    Muy bueno, podrías explicar el mismo código pero utilizando otro LLM ? (no chatGPT)

    • @NechuBM
      @NechuBM  Год назад +1

      Si quieres utilizar otro LLM en local o la nube te recomiendo este vídeo donde explico como hacerlo: ruclips.net/video/tCFDPW2ctgI/видео.html
      Solo quedaría cambiar la petición a ChatGPT por la llamada a tu LLM en local o la nube como veras en el enlace.

    • @NechuBM
      @NechuBM  Год назад

      El código queda así (utilizando el modelo flan-t5-large de google):
      from langchain.llms import HuggingFaceHub
      llm=HuggingFaceHub(repo_id="google/flan-t5-large", model_kwargs={"temperature":0.7, "max_length":512})
      chain = load_qa_chain(llm, chain_type="stuff")

  • @paulodmanace4812
    @paulodmanace4812 Год назад +1

    Podrías hacer algo similar con open source, por ejemplo usando llama 2? Desde ya gracias.

    • @NechuBM
      @NechuBM  Год назад

      Sí, solo necesitas cambiar las líneas de código donde llamamos a ChatGPT por el modelo que te interese. Si quieres probar la librería Transformers de HugginFace con Llama2 quedaría algo así:
      from transformers import pipeline
      pipe = pipeline("text-generation", model="meta-llama/Llama-2-7b-chat-hf")

  • @ferhf824
    @ferhf824 Год назад +1

    1:38 xd dislexia jajaja

  • @DiegoIsmaelZambranoFigueroa
    @DiegoIsmaelZambranoFigueroa 4 месяца назад

    Excelente video pero necesito ayuda con la ultima versión de Pinecone, al dia de hoy ha cambiado mucho

    • @NechuBM
      @NechuBM  4 месяца назад

      Aquí tienes un enlace al notebook con la versión actualizada: colab.research.google.com/drive/18TA2N2_85RDlK9sSJNBVwElm8duPHg0M

    • @DiegoIsmaelZambranoFigueroa
      @DiegoIsmaelZambranoFigueroa 4 месяца назад

      @@NechuBM Gracias pero ahora me sale este error: RateLimitError Traceback (most recent call last)
      in ()
      2 docs = vstore.similarity_search(pregunta, 3)
      3 # Utilizar los parrafos similares para darle contexto a ChatGPT
      ----> 4 respuesta = chain.run(input_documents=docs, question=pregunta)
      5 print(f"Respuesta ChatGPT: {respuesta}")
      28 frames
      /usr/local/lib/python3.10/dist-packages/openai/_base_client.py in _request(self, cast_to, options, remaining_retries, stream, stream_cls)
      1039
      1040 log.debug("Re-raising status error")
      -> 1041 raise self._make_status_error_from_response(err.response) from None
      1042
      1043 return self._process_response(
      RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}
      Tengo la versión gratuita de chatGPT

  • @jefersonruiz697
    @jefersonruiz697 5 месяцев назад

    Muy buen vídeo, pero Pinecone parece que cambio mucho y ya no funciona igual. :(
    Igual me sirvió mucho!

    • @NechuBM
      @NechuBM  4 месяца назад

      Si, Pinecone ha estado realizando unos cambios en su API y cómo conectarnos a sus servicios. Estoy preparando un notebook actualizado que funcione para la nueva versión.

    • @NechuBM
      @NechuBM  4 месяца назад

      Aquí tienes un notebook con la nueva versión de Pinecone: colab.research.google.com/drive/18TA2N2_85RDlK9sSJNBVwElm8duPHg0M

    • @johangonzalez6864
      @johangonzalez6864 20 дней назад

      Podrias compartirnos el código actualizado pero con streamlot, sería genial, ya que no he podido implementarlo​@@NechuBM

  • @bigingstones4880
    @bigingstones4880 Год назад +2

    Cuando ejecuto la siguiente parte: collection_description = pinecone.describe_collection(INDEX_NAME)
    Me sale el siguiente error:
    ---------------------------------------------------------------------------
    NotFoundException Traceback (most recent call last)
    in ()
    ----> 1 collection_description = pinecone.describe_collection(INDEX_NAME)
    9 frames
    /usr/local/lib/python3.10/dist-packages/pinecone/core/client/rest.py in request(self, method, url, query_params, headers, body, post_params, _preload_content, _request_timeout)
    223
    224 if r.status == 404:
    --> 225 raise NotFoundException(http_resp=r)
    226
    227 if 500

    • @NechuBM
      @NechuBM  Год назад

      EDIT 02/01/2024: Revisando mejor el código he cambiado unas líneas del notebook. Lo importante es hacer un describe del Index y no de collection.
      Una collection es una copia de seguridad del Index. Como no hemos creado ninguna nos da un 404 NotFound, a mi si me funciona porque la tenía creada de antes.
      Comentario Anterior:
      Sin replicar el error en mi ordenador es difícil dar con la solución, pero diría que puede ocurrir por dos motivos:
      • No has creado el índice en la plataforma de Pinecone con el nombre ‘taller’ y por eso no lo encuentra cuando intenta describirlo. Recuerda que INDEX_NAME=’taller’. Comprueba que has cambiado los valores de PINECONE_API_KEY y PINECONE_ENV por los tuyos
      • Simplemente hubo un error puntual de conexión al realizar la petición y si vuelves a probar te funcionará.

    • @rubenev
      @rubenev Год назад

      @@NechuBM el texto dice: The requested feature 'Collections' is not supported by the current index type 'Starter'. esto es porque la cuenta es gratis? o como poner un type diferente al 'starter'?

    • @NechuBM
      @NechuBM  11 месяцев назад

      @@rubenev Acabo de ejecutar el código y no me devuelve ese error. La versión de la librería de Pinecone en Python que estoy utilizando es la 2.2.4
      En cualquier caso, lo importante no es un describe de la collection si no del índice. He cambiado el código en el notebook.

    • @NechuBM
      @NechuBM  11 месяцев назад

      Revisando mejor el código he cambiado unas líneas del notebook. Lo importante es hacer un describe del Index y no de collection.
      Una collection es una copia de seguridad del Index. Como no hemos creado ninguna nos da un 404 NotFound, a mi si me funciona porque la tenía creada de antes.

    • @rubenev
      @rubenev 11 месяцев назад

      @@NechuBM Hola!, de hecho lo estoy tratando de ejecutar desde una pc, y me aparece el error de : pip install sentence-transformers porque esta librería tiene conflictos, pero no me dice donde, entonces la instalación recorre las versiones, pero no encuentra ninguna compatible "INFO: pip is looking at multiple versions of sentence-transformers to determine which version is compatible with other requirements."

  • @fmelossi
    @fmelossi 7 месяцев назад

    Gracias Nechu, te cuento que no logro resolver el siguiente error cuando ejecuto la linea pinecone.list_indexes(), WARNING:urllib3.connectionpool:Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NameResolutionError(": Failed to resolve 'controller.svc.aped-4627-b74a.pinecone.io.pinecone.io' ([Errno -2] Name or service not known)")': /databases
    WARNING:urllib3.connectionpool:Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NameResolutionError(": Failed to resolve 'controller.svc.aped-4627-b74a.pinecone.io.pinecone.io' ([Errno -2] Name or service not known)")': /databases
    WARNING:urllib3.connectionpool:Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NameResolutionError(": Failed to resolve 'controller.svc.aped-4627-b74a.pinecone.io.pinecone.io' ([Errno -2] Name or service not known)")': /databases
    ---------------------------------------------------------------------------
    gaierror Traceback (most recent call last)
    /usr/local/lib/python3.10/dist-packages/urllib3/connection.py in _new_conn(self)
    202 try:
    --> 203 sock = connection.create_connection(
    204 (self._dns_host, self.port),
    25 frames
    gaierror: [Errno -2] Name or service not known
    The above exception was the direct cause of the following exception:
    NameResolutionError Traceback (most recent call last)
    NameResolutionError: : Failed to resolve 'controller.svc.aped-4627-b74a.pinecone.io.pinecone.io' ([Errno -2] Name or service not known)
    The above exception was the direct cause of the following exception:
    MaxRetryError Traceback (most recent call last)
    /usr/local/lib/python3.10/dist-packages/urllib3/util/retry.py in increment(self, method, url, response, error, _pool, _stacktrace)
    513 if new_retry.is_exhausted():
    514 reason = error or ResponseError(cause)
    --> 515 raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]
    516
    517 log.debug("Incremented Retry for (url='%s'): %r", url, new_retry)
    MaxRetryError: HTTPSConnectionPool(host='controller.svc.aped-4627-b74a.pinecone.io.pinecone.io', port=443): Max retries exceeded with url: /databases (Caused by NameResolutionError(": Failed to resolve 'controller.svc.aped-4627-b74a.pinecone.io.pinecone.io' ([Errno -2] Name or service not known)"))

    • @fmelossi
      @fmelossi 7 месяцев назад

      Pd: el valor de PINECONE_ENV lo saque de REGION us-east-1

    • @NechuBM
      @NechuBM  7 месяцев назад

      No parece ser un error relacionado con las variables de entorno. Te recomendaría revisar si tienes instaladas las mismas versiones de las bibliotecas que las que utilizamos en el tutorial. Si el error persiste y has realizado algún cambio, comparte el código para ver qué podría estar causando el problema.