Va crear un ETL de codi obert per preparar dades per a RAG

CocoIndex és un framework ETL de codi obert per preparar dades en aplicacions d'IA com cerca semàntica i generació augmentada per recuperació (RAG). Ofereix un model de programació basat en dades que simplifica la creació i manteniment de pipelines d'indexació, garantint fresc

lunes, 17 de marzo de 2025 • 1 min de lectura • Equip Q2BSTUDIO

Empresa-Software-Apps

A Q2BSTUDIO, empresa especialitzada en desenvolupament i serveis tecnològics, sempre estem explorant eines innovadores que optimitzin el processament i anàlisi de dades. Avui volem parlar sobre CocoIndex, un marc de treball ETL de codi obert dissenyat per preparar dades per a aplicacions d'intel·ligència artificial com cerca semàntica i RAG (retrieval-augmented generation).

?? Característiques Clau:

  • Programació basada en flux de dades
  • Suport per a lògica personalitzada, permetent integrar diferents mètodes de fragmentació, generació d'embeddings i emmagatzematge vectorial
  • Actualitzacions incrementals amb gestió d'estat integrada per evitar la recomputació innecessària
  • SDK en Python amb nucli en RUST

?? Com Començar:

  1. Instal·lació: Per començar, instal·la la biblioteca de CocoIndex en Python:
pip install cocoindex
  1. Configuració de Postgres amb l'extensió pgvector: Assegura't de tenir Docker Compose instal·lat i després inicia una base de dades Postgres:
docker compose -f <(curl -L https://raw.githubusercontent.com/cocoindex-io/cocoindex/refs/heads/main/dev/postgres.yaml) up -d
  1. Definir el flux d'indexació: Crea un flux per indexar les teves dades. Per exemple:
@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)])

A Q2BSTUDIO ens especialitzem en solucions tecnològiques a mida i estem compromesos amb la implementació d'eines innovadores com CocoIndex per optimitzar processos d'anàlisi de dades. Si estàs buscant millorar l'eficiència en la preparació de dades per a intel·ligència artificial, contacta'ns i descobreix com podem ajudar-te en la transformació digital de la teva empresa.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.