[Python] Upserting in Pinecone takes too long

Discussão em 'Python' iniciado por Stack, Março 12, 2025.

  1. Stack

    Stack Membro Participativo

    I'm trying to upsert reviews that i've scraped into pinecone. For the embedding model im using jina-embedding-v3. For 204 reviews this takes around 2.5 hours! in Colab. Tried using GPU but the embeddings arent using GPU. Am i doing something wrong? Is there a way that i can speed up the process? The code is below:

    Initialising DB:

    if index_name not in pc.list_indexes().names():
    pc.create_index(
    name=index_name,
    dimension=1024,
    metric="cosine",
    spec=ServerlessSpec(
    cloud="aws",
    region="us-east-1"
    )
    )


    Embedding & Upserting:

    device = 'cuda' if torch.cuda.is_available() else 'cpu'

    # Load the Jina embedding model and tokenizer from Hugging Face
    model_name = "jinaai/jina-embeddings-v3"
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    model = AutoModel.from_pretrained(model_name, trust_remote_code=True)

    from langchain.text_splitter import SpacyTextSplitter
    text_splitter = SpacyTextSplitter(chunk_size=500)

    # Function to generate embeddings
    def generate_embeddings(text, task='retrieval.passage'):
    return model.encode(text, convert_to_tensor=True, task=task).numpy()

    for review_id, review in enumerate(all_reviews[:2]):
    chunks = text_splitter.split_text(review)

    for chunk_index, chunk in enumerate(chunks):
    embedding = generate_embeddings(chunk)

    unique_id = f"{review_id}_{chunk_index}"

    metadata = {"review_id": review_id, "chunk_index": chunk_index, "text": chunk}

    index.upsert([(unique_id, embedding, metadata)])

    # Generate and store embeddings
    for review_id, review in enumerate(all_reviews):
    chunks = text_splitter.split_text(review)

    for chunk_index, chunk in enumerate(chunks):
    embedding = generate_embeddings(chunk)

    unique_id = f"{review_id}_{chunk_index}"

    metadata = {"review_id": review_id, "chunk_index": chunk_index, "text": chunk}

    index.upsert([(unique_id, embedding, metadata)])

    Continue reading...

Compartilhe esta Página