CoolFace
Apppublic

OctusTech/cartalogo-api

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
setup_pinecone.py75 linesDownload Raw Back to scripts
1import os2from pinecone import Pinecone, ServerlessSpec3import time4 5def setup_pinecone_index():6    """Configura índice otimizado do Pinecone para joias"""7    8    # Configuração9    api_key = os.getenv('PINECONE_API_KEY')10    index_name = os.getenv('PINECONE_INDEX_NAME', 'jewelry-embeddings')11    12    if not api_key:13        raise ValueError("PINECONE_API_KEY não encontrada no ambiente")14    15    # Inicializa cliente16    pc = Pinecone(api_key=api_key)17    18    # Configuração do índice19    index_config = {20        "name": index_name,21        "dimension": 768,  # ViT-L-14 do OpenCLIP22        "metric": "cosine",  # Melhor para embeddings de imagem23        "spec": ServerlessSpec(24            cloud="aws",25            region="us-east-1"26        )27    }28    29    try:30        # Verifica se índice existe31        existing_indexes = pc.list_indexes().names()32        33        if index_name in existing_indexes:34            print(f"✅ Índice '{index_name}' já existe!")35            36            # Verifica configuração37            index_info = pc.describe_index(index_name)38            print(f"📊 Dimensão: {index_info.dimension}")39            print(f"📊 Métrica: {index_info.metric}")40            print(f"📊 Status: {index_info.status.state}")41            42        else:43            print(f"🚀 Criando índice '{index_name}'...")44            pc.create_index(**index_config)45            46            # Aguarda criação47            print("⏳ Aguardando criação do índice...")48            while True:49                index_info = pc.describe_index(index_name)50                if index_info.status.state == "Ready":51                    break52                time.sleep(5)53            54            print(f"✅ Índice '{index_name}' criado com sucesso!")55        56        # Testa conexão57        index = pc.Index(index_name)58        stats = index.describe_index_stats()59        print(f"📊 Vetores no índice: {stats.total_vector_count}")60        61        return index62        63    except Exception as e:64        print(f"❌ Erro ao configurar Pinecone: {e}")65        return None66 67if __name__ == "__main__":68    print("🔧 Configurando Pinecone para catalogação de joias...")69    index = setup_pinecone_index()70    71    if index:72        print("✅ Configuração do Pinecone concluída!")73    else:74        print("❌ Falha na configuração do Pinecone!")75