[Indexes] Salvar BL e BQ indexes in avro schema para atributos do tipo Vector

Description

Objetivo


Ao serem criados indexes para atributos do tipo vector tanto na camada de BigQuery quanto de BL, estes valores devem ser armazenados no arquivo avro schema da entidade baseado no schema abaixo:

entityIndexes = {    "bigquery": [        # treeah        {            "name": str,            "columns": list[str],            "type": str,            "method": str #distance,            "lists": int, #leaf_node_embedding_count             "normalization": str       },       # ivf       {           "name": str,           "columns": list[str],           "type": str,           "method": str #distance,           "lists": int #NUM_LISTS       }    ],    "lowLatency": [        {            "name": str,            "columns": list[str],            "type": str,            "unique": bool,            "primary": bool,        },        { 	        "name": "pk_id",	        "columns": ["embedding"], //apenas uma coluna. vector aceita uma coluna por index. OBRIGATORIO	        "method": "vector_l2_ops", // aceita: vector_l2_ops, vector_cosine_ops, vector_ip_ops, bit_hamming_ops, vector_l1_ops (hnsw), bit_jaccard_ops (hnsw) // OBRIGATORIO	        "type": "ivfflat", // ou "hnsw".  OBRIGATORIO	        "lists": 100, // para o tipo ivfflat. OBRIGATORIO	        "m": 16, //para o tipo hnsw. OPCIONAL	        "efConstruction": 64 //para o tipo hnsw.  OPCIONAL       }    ]}
  • O fluxo deve cobrir o banco PG e o BigQuery, especificamente índices para atributos Vector:

    • PG:

      • IVFFLAT – aproximação com clustering, o mais comum pra KNN.

      • HNSW – grafo hierárquico, ótimo pra alta qualidade de busca em muitos casos (versões mais novas do pgvector / Postgres).

    • BigQuery - TreeAH

      • Parâmetro "Distance type" implementado (Euclidean, Cosine, Dot Product)

      • Parâmetro "Leaf_node_embedding_count" implementado

      • Parâmetro "Normalization type" implementado (L2, L1, None)

      BigQuery - IVF

      • Parâmetro "Distance type" implementado (Euclidean, Cosine, Dot Product)

      • Parâmetro "Num List" implementado (Integer)