Creé un ETL de código abierto para preparar datos para RAG

CocoIndex es un framework ETL de código abierto para preparar datos en aplicaciones de IA como búsqueda semántica y generación aumentada por recuperación (RAG). Ofrece un modelo de programación basado en datos que simplifica la creación y mantenimiento de pipelines de indexación, garantizando frescu

lunes, 17 de marzo de 2025 • 1 min read • Q2BSTUDIO Team

Empresa-Software-Apps

En Q2BSTUDIO, empresa especializada en desarrollo y servicios tecnológicos, siempre estamos explorando herramientas innovadoras que optimicen el procesamiento y análisis de datos. Hoy queremos hablar sobre CocoIndex, un marco de trabajo ETL de código abierto diseñado para preparar datos para aplicaciones de inteligencia artificial como búsqueda semántica y RAG (retrieval-augmented generation).

?? Características Clave:

  • Programación basada en flujo de datos
  • Soporte para lógica personalizada, permitiendo integrar diferentes métodos de fragmentación, generación de embeddings y almacenamiento vectorial
  • Actualizaciones incrementales con gestión de estado integrada para evitar la recomputación innecesaria
  • SDK en Python con núcleo en RUST

?? Cómo Empezar:

  1. Instalación: Para comenzar, instala la biblioteca de CocoIndex en Python:
pip install cocoindex
  1. Configuración de Postgres con la extensión pgvector: Asegúrate de tener Docker Compose instalado y luego inicia una base de datos Postgres:
docker compose -f <(curl -L https://raw.githubusercontent.com/cocoindex-io/cocoindex/refs/heads/main/dev/postgres.yaml) up -d
  1. Definir el flujo de indexación: Crea un flujo para indexar tus datos. Por ejemplo:
@cocoindex.flow_def(name='TextEmbedding')
def text_embedding(flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.DataScope):
    data_scope['documents'] = flow_builder.add_source(cocoindex.sources.LocalFile(path='markdown_files'))
    doc_embeddings = data_scope.add_collector()

    with data_scope['documents'].row() as doc:
        doc['chunks'] = doc['content'].transform(
            cocoindex.functions.SplitRecursively(language='markdown', chunk_size=300, chunk_overlap=100))

        with doc['chunks'].row() as chunk:
            chunk['embedding'] = chunk['text'].transform(
                cocoindex.functions.SentenceTransformerEmbed(model='sentence-transformers/all-MiniLM-L6-v2'))

            doc_embeddings.collect(filename=doc['filename'], location=chunk['location'],
                                   text=chunk['text'], embedding=chunk['embedding'])

    doc_embeddings.export(
        'doc_embeddings',
        cocoindex.storages.Postgres(),
        primary_key_fields=['filename', 'location'],
        vector_index=[('embedding', cocoindex.VectorSimilarityMetric.COSINE_SIMILARITY)])

En Q2BSTUDIO nos especializamos en soluciones tecnológicas a la medida y estamos comprometidos con la implementación de herramientas innovadoras como CocoIndex para optimizar procesos de análisis de datos. Si estás buscando mejorar la eficiencia en la preparación de datos para inteligencia artificial, contáctanos y descubre cómo podemos ayudarte en la transformación digital de tu empresa.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.