Saltearse al contenido

FAISS

El componente FAISS permite a los usuarios crear, guardar y consultar un índice de vectores localmente usando la librería FAISS. Con él puedes indexar documentos, buscar los más relevantes según una consulta y obtener un objeto retriever que se puede usar en flujos de trabajo más complejos.

¿Cómo funciona?

Cuando seleccionas la operación Add, el componente toma los datos que ingresas (en el campo Ingest Data), los convierte en documentos y los transforma en vectores con la embedding que le proporciones. Luego crea un índice FAISS y lo guarda en la carpeta indicada por Persist Directory.
Con la operación Search, el componente carga el índice guardado, ejecuta una búsqueda de similitud con la Search Query y devuelve los documentos más cercanos, junto con su puntuación de relevancia.
La operación Retriever simplemente carga el índice y devuelve un objeto retriever que puede ser usado por otros componentes para obtener documentos de forma programática.

Todo el procesamiento se hace localmente; no se llama a APIs externas. Los archivos de índice se guardan en la ruta relativa a donde se ejecuta Nappai, por lo que puedes mover la carpeta sin perder la indexación.

Operaciones

Este componente ofrece varias operaciones que puedes seleccionar según lo que necesites hacer. Solo puedes usar una operación a la vez:

  • Add: Crea o actualiza el índice FAISS con los datos que ingreses.
  • Search: Busca los documentos más relevantes según una consulta y devuelve los resultados.
  • Retriever: Carga el índice y devuelve un objeto retriever para usar en otros flujos.

Para usar el componente, primero selecciona la operación que necesitas en el campo Operation (Operación).

Entradas

Campos de Entrada

Los siguientes campos están disponibles para configurar este componente. Cada campo puede estar visible en diferentes operaciones:

  • Embedding: Embedding que se usará para convertir los textos en vectores.

    • Visible en: Add, Search, Retriever
  • Ingest Data: Lista de documentos que se indexarán cuando uses la operación Add.

    • Visible en: Add
  • Operation: Selecciona la operación que quieres ejecutar.

    • Visible en: Add, Search, Retriever
  • Allow Dangerous Deserialization: Permite cargar archivos pickle de fuentes no confiables. Solo habilítalo si confías en la fuente de los datos.

    • Visible en: Add, Search, Retriever
  • Index Name: Nombre del índice dentro de la carpeta de persistencia. El valor por defecto es nappai_index.

    • Visible en: Add, Search, Retriever
  • Number of Results: Número de resultados que quieres devolver en una búsqueda. El valor por defecto es 4.

    • Visible en: Add, Search, Retriever
  • Persist Directory: Carpeta donde se guardará el índice FAISS. La ruta es relativa al directorio donde se ejecuta Nappai.

    • Visible en: Add, Search, Retriever
  • Search Query: Texto que buscas. Si lo dejas vacío, se devolverán todos los documentos.

    • Visible en: Search
  • Search Score Threshold: Umbral mínimo de similitud para que un documento sea considerado relevante. Es un valor avanzado y su valor por defecto es 0.1.

    • Visible en: Add, Search, Retriever

Salidas

  • Retriever: Devuelve un objeto retriever que puede ser usado por otros componentes para obtener documentos de forma programática.
  • Results: Devuelve una lista de documentos encontrados en una búsqueda, cada uno con su puntuación de relevancia.
  • Vector Store: Devuelve el objeto vector store FAISS completo, útil si quieres manipularlo directamente.

Ejemplo de Uso

Supongamos que quieres indexar un conjunto de artículos y luego buscar los más relevantes cuando un usuario escribe una pregunta.

  1. Add

    • Selecciona la operación Add.
    • Conecta tu Embedding (por ejemplo, un modelo de OpenAI).
    • Pega los artículos en el campo Ingest Data.
    • Establece Persist Directory a my_faiss_index.
    • Haz clic en Run. El índice se crea y se guarda.
  2. Search

    • Cambia la operación a Search.
    • Conecta el mismo Embedding.
    • En Persist Directory escribe my_faiss_index.
    • En Search Query escribe la pregunta del usuario.
    • Haz clic en Run. Los resultados aparecerán en la salida Results con su puntuación.
  3. Retriever (opcional)

    • Selecciona la operación Retriever.
    • Conecta el Embedding y la misma carpeta de persistencia.
    • El componente devuelve un retriever que puedes usar en otro flujo para obtener documentos según sea necesario.

Componentes Relacionados

  • Embeddings: Crea la representación vectorial de los textos.
  • Vector Store: Otros tipos de almacenes de vectores (por ejemplo, Pinecone, Chroma).
  • Retriever: Componentes que utilizan un retriever para obtener documentos en flujos de IA.

Consejos y Mejores Prácticas

  • Seguridad: No habilites Allow Dangerous Deserialization a menos que estés seguro de la fuente de los archivos pickle.
  • Persistencia: Guarda el índice en una carpeta que esté respaldada, ya que es la única forma de conservar la indexación entre sesiones.
  • Tamaño de los datos: Si trabajas con grandes volúmenes, considera dividir la carga en lotes para evitar sobrecargar la memoria.
  • Reindexación: Si cambian los documentos, vuelve a ejecutar la operación Add para actualizar el índice.
  • Pruebas: Antes de usar el índice en producción, prueba la operación Search con consultas típicas para asegurarte de que los resultados son relevantes.

Consideraciones de Seguridad

  • Deserialización peligrosa: La opción Allow Dangerous Deserialization permite cargar archivos pickle que podrían ejecutar código malicioso. Úsala solo con fuentes confiables.
  • Acceso a la carpeta: Asegúrate de que la carpeta Persist Directory tenga los permisos adecuados para evitar que usuarios no autorizados modifiquen el índice.