Introducción a LangChain

1

Uso de embeddings con LangChain para sistemas de respuesta.

2

Creación de Chatbots con Langchain en Python

3

Cargar modelos de Home and Face en Google Colab con Transformers

4

Programación de Modelos GPT-3.5 y DaVinci con LangChain

5

Creación de PromptTemplates en LangChain

6

Uso de Cadenas Language Chain para Modelos de Lenguaje

7

Sumarización de PDFs con LangChain y modelos de OpenAI

8

Búsqueda de respuestas con modelos de lenguaje y bases de datos Chroma

9

Técnicas de limpieza de texto con Python y Regex

Quiz: Introducción a LangChain

Casos de uso de LangChain

10

Chatbots con LLMs para atención al cliente eficiente

11

Privacidad de Datos en Aplicaciones con LLMs

Quiz: Casos de uso de LangChain

Manejo de documentos con índices

12

Creación de índices en Langchain para consultas precisas

13

Clase Document en Langchain: Creación y Uso de Esquemas Básicos

14

Carga y Procesamiento de PDFs y Word con Document Loaders

15

Leer y convertir archivos CSV a DataFrame de Pandas con LangChain

16

Creación de Cargadores de JSON-L en Python

17

Partición de Documentos con TextSplitter de Langstream

18

Creación de un chatbot con LangChain y OpenAI

19

Índice Vectorial con Langchain y Chroma para Consultas AI

Quiz: Manejo de documentos con índices

Embeddings y bases de datos vectoriales

20

Uso de Embeddings para Búsqueda Vectorial Eficiente

21

OpenAI Embeddings: Creación y Uso en Procesamiento de Texto

22

Creación de Embeddings Open Source con Sentence Transformers

23

Entrega de Documentos con ChromaDB

24

Creación y Manejo de Bases de Datos Vectoriales con Chroma

25

Creación de un Retriever en Chroma para Bases de Datos Vectoriales

26

Interacción con IA usando Transformadores y Almacenamiento en Vectores

27

Creación de Cadena QA con RetrievalQA en LangChain

Quiz: Embeddings y bases de datos vectoriales

Chats y memoria con LangChain

28

Memoria de Corto Plazo en Chatbots: Implementación en Python

29

Creación de bloques de mensajes para modelos de chat con LangChain

30

Variables dinámicas en promts con Langstean

31

Inyección de Memoria en Modelos de Chat con LangChain y OpenAI

32

Gestión de ventanas de memoria en chatbots con Python

33

Programación de Chatbots con Resumen de Memoria en Python

34

Memoria Avanzada para Chatbots: Buffer y Tokens en Python

35

Programación de Chatbots con Memoria de Entidades en Ventas

36

Memoria y recuperación en chatbots: Implementación en Python

Quiz: Chats y memoria con LangChain

Evolución del uso de LLM

37

Modelos de Lenguaje: Integración y Uso de APIs Avanzadas

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de LangChain

Curso de LangChain

Omar Espejel

Omar Espejel

Creación de Embeddings Open Source con Sentence Transformers

22/37
Recursos

¿Cómo utilizar modelos de embeddings open source con Langstream?

La posibilidad de trabajar con modelos de embeddings open source nos abre las puertas a un abanico de oportunidades en el mundo del procesamiento de lenguaje natural. Langstream nos permite utilizar estas herramientas, y en esta guía analizaremos cómo implementar de manera eficiente los modelos de embeddings a través de la biblioteca Sentence Transformers. El objetivo es ayudar a los usuarios a configurar y aprovechar estos modelos a su máximo potencial utilizando ejemplos prácticos.

¿Qué son los Sentence Transformers?

Los Sentence Transformers son modelos de embedding altamente valorados dentro de la comunidad, conocidos por ser de los primeros en su tipo y por su gran potencia. Embeddings, en este contexto, se refiere al proceso de transformar texto en un formato numérico que los algoritmos de machine learning pueden procesar. Esencialmente, convierten oraciones en vectores de números que capturan el significado semántico del texto.

Para empezar a trabajar con estos modelos, debemos importar el componente Sentence Transformer Embeddings desde la librería de embeddings diseñada para soportarlo en Langstream. Así, se utiliza el modelo "Paraphrase Multilingual Mini LM L12 V2", el cual es un modelo multilingüe que soporta el español.

from langstream.embeddings import SentenceTransformerEmbeddings

embeddings_st = SentenceTransformerEmbeddings(model_name="paraphrase-multilingual-MiniLM-L12-v2")

Ventajas de usar Sentence Transformers

  • Versatilidad Multilingüe: Capacidad de procesar múltiples idiomas, incluido el español.
  • Independencia: Los modelos pueden funcionar localmente sin necesidad de conectarse a una API.
  • Optimización de recursos: Embeddings compactos que requieren menor poder computacional.

¿Cómo cargar y usar struct embeddings?

Los struct embeddings representan generadores de embeddings de nueva generación altamente eficientes. Aunque aún no hay un modelo de struct embedding que maneje el español específicamente, su rendimiento en otros idiomas es notable.

Para usarlos, importa la librería Instructor Embeddings y configúralos para funcionar en tu hardware preferido, como CUDA para usar GPU.

from langstream.embeddings import InstructEmbeddings

embeddings_instruct = InstructEmbeddings(model_name="Instructor-Large",
                                         model_kwargs={"device": "cuda"})

Características de los struct embeddings

  • Innovación y poder: Modelos avanzados que destacan por la cantidad de detalles que capturan en los embeddings.
  • Gran escala: Embeddings de 768 números, proporcionando una rica representación del texto.

¿Cómo trabajar con diferentes tamaños y números de tokens?

Es crucial entender los límites de tokenización de los modelos para evitar cortes de texto y pérdidas de información significativa. Cuando se trabajan con modelos importados desde Hugging Face, podemos determinar el tamaño máximo de tokens aceptados.

max_tokens_instruct = embeddings_instruct.client.max_tokens  # 512 tokens
max_tokens_st = embeddings_st.client.max_tokens  # 128 tokens

Cómo elegir el tamaño correcto

  • Sentence Transformers Mini: Optimo para pequeños fragmentos con un máximo de 128 tokens.
  • Instructor Large: Procesa hasta 512 tokens por documento, adecuado para textos más largos.

Para otros proveedores, como OpenAI y Cohere, es importante revisar sus documentaciones. OpenAI, por ejemplo, podría aceptar hasta 8000 tokens, mientras que para Cohere el número óptimo es 500 tokens.

Recomendaciones y mejores prácticas

  1. Leer documentaciones actualizadas: Mantente al día revisando blogs y documentaciones para conocer las capacidades y limitaciones de los modelos.
  2. Optar por modelos multilingües: Si trabajas en proyectos multilingües, asegúrate de seleccionar modelos que soporten todos los idiomas necesarios.
  3. Optimizar el hardware: Siempre que sea posible, utilice GPU para acelerar el proceso de generación de embeddings.
  4. Fragmentar textos adecuadamente: Asegúrate de fragmentar tus documentos según el tamaño de tokens aceptados por el modelo elegido.

Adoptar estas prácticas beneficiará tanto a los proyectos personales como a los empresariales, maximizando la eficiencia al trabajar con grandes volúmenes de texto. Implementar adecuadamente los modelos de embeddings no solo optimiza el rendimiento, sino que también mejora la calidad de las aplicaciones de procesamiento de lenguaje natural.

Aportes 9

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

pueden tambien probar este modelo es un poco pesado pero es multilenguaje con una longitud de 1024 mayor a los 384 y 724 moestrados en la clase
embeddings_hg = HuggingFaceEmbeddings(model_name=“intfloat/multilingual-e5-large”)

Una diferencia entre usar embeddings o IntructEmbeddings, es que el IntructEmbeddings, porporciona contexto a la busqueda, por ejemplo, en cada busqueda que realicemos podemos añadir un texto como el siguiente "devuelve articulos de la wikipedia que contegan: {nuestra variable}"
Hoy en día que hago esto mismo me saca un error TypeError: INSTRUCTOR.\_load\_sbert\_model() got an unexpected keyword argument 'token' a pesar de que yo no esté colocando ningún parámetro que diga Token, alguien sabe hoy en día por qué sucede esto de casualidad?
A día de hoy, tuve que usar el siguiente codigo para no tener problemas en la consola: ```python %%capture !pip install langchain_community sentence_transformers from langchain_community.embeddings import HuggingFaceInstructEmbeddings embedding_instruct = HuggingFaceInstructEmbeddings( model_name="hkunlp/instructor-large", model_kwargs={"device":"cuda"} ) ```
Lo que siempre me ayuda a entender a mi estos conceptos es que son una "serie de pasos". Aquí: 1- Instanciamos el modelo de embeddings. 2- Ocupamos embed\_documents o embed\_query dependiendo de lo que estamos llevando a cabo. En todo el curso me ayudó esta estructura, pareciera que es algo secuencial.
a Jan 2025. Me tomo un buen buen rato pero a pesar de que encuentren que deben mantener la versión 2.2.2 de sentence transformers, la Liberia ha sido deprecada. Este fue el código que me funcionó `!pip install huggingface_hub transformers langchain-community` y el código es ```js from langchain.embeddings import HuggingFaceEmbeddings embedding_instruct = HuggingFaceEmbeddings( model_name = "hkunlp/instructor-large", model_kwargs = {'device':'cpu'} ) ```
Para los que no les funciona el Instruct, esto puede ayudar (primero reiniciar la sesión): %%capture!pip install sentence-transformers==2.2.2 langchain\_community InstructorEmbedding
Como aporte a tener en cuenta cuando estén realizando sus embeddings, existen dos conceptos importantes que son max-tokens y dimensions (dimensiones). Las dimensiones están relacionadas con la representación vectorial de palabras, mientras que el máximo de tokens está relacionado con la gestión de la longitud de las secuencias de entrada durante la tokenización y el procesamiento de texto. Ambos son parámetros importantes que se deben ajustar según las necesidades y recursos disponibles.
`tu_embedding.client`, nos dice la cantidad de `tokens`, permitidos por el embedding que estes usando.