[Python] AttributeError: module 'pinecone' has no attribute 'Index'

Discussão em 'Python' iniciado por Stack, Junho 25, 2025.

  1. Stack

    Stack Membro Participativo

    Hi I'm trying to create a pinecone index and write embeddings to it as per below code, but i'm keep getting AttributeError: module 'pinecone' has no attribute 'Index' error, i checked and found that its due to langchain and pinecone version miss matches so tried to install lesser version of pinecone-client==2.2.4 that also not working, please help.

    import os
    from dotenv import load_dotenv,find_dotenv
    from langchain.chains import RetrievalQA
    from langchain_openai import ChatOpenAI

    load_dotenv(find_dotenv(),override=True)

    from pinecone import Pinecone, ServerlessSpec # if you're initializing a new index

    from dotenv import load_dotenv, find_dotenv

    pc = Pinecone()


    # loading PDF, DOCX and TXT files as LangChain Documents
    def load_document(file):
    import os
    name, extension = os.path.splitext(file)

    if extension == '.pdf':
    from langchain.document_loaders import PyPDFLoader
    print(f'Loading {file}')
    loader = PyPDFLoader(file)
    elif extension == '.docx':
    from langchain.document_loaders import Docx2txtLoader
    print(f'Loading {file}')
    loader = Docx2txtLoader(file)
    elif extension == '.txt':
    # from langchain.document_loaders import TextLoader
    from langchain_community.document_loaders import TextLoader
    loader = TextLoader(file)
    else:
    print('Document format is not supported!')
    return None

    data = loader.load()
    return data

    data = load_document('file.txt')

    def chunk_data(data, chunk_size=256):
    from langchain.text_splitter import RecursiveCharacterTextSplitter
    text_splitter = RecursiveCharacterTextSplitter(chunk_size=chunk_size, chunk_overlap=0)
    chunks = text_splitter.split_documents(data)
    return chunks

    def insert_or_fetch_embeddings(index_name, chunks):
    # importing the necessary libraries and initializing the Pinecone client
    import pinecone
    from langchain_community.vectorstores import Pinecone
    from langchain_openai import OpenAIEmbeddings
    from pinecone import ServerlessSpec

    pc = pinecone.Pinecone()

    embeddings = OpenAIEmbeddings(model='text-embedding-3-small', dimensions=1536) # 512 works as well

    # loading from existing index
    if index_name in pc.list_indexes().names():
    print(f'Index {index_name} already exists. Loading embeddings ... ', end='')
    vector_store = Pinecone.from_existing_index(index_name, embeddings)
    print('Ok')
    else:
    # creating the index and embedding the chunks into the index
    print(f'Creating index {index_name} and embeddings ...', end='')

    # creating a new index
    pc.create_index(
    name=index_name,
    dimension=1536,
    metric='cosine',
    spec=ServerlessSpec(
    cloud="aws",
    region="us-east-1"
    )
    )

    # processing the input documents, generating embeddings using the provided `OpenAIEmbeddings` instance,
    # inserting the embeddings into the index and returning a new Pinecone vector store object.
    vector_store = Pinecone.from_documents(chunks, embeddings, index_name=index_name)
    print('Ok')

    return vector_store

    index_name = 'askadocument'
    vector_store = insert_or_fetch_embeddings(index_name=index_name, chunks=chunks)

    llm = ChatOpenAI(model="gpt-4.1-mini", temperature=0.3)

    retriever = vector_store.as_retriever(search_type='similarity', search_kwargs={'k': 2})

    chain = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever)

    answer = chain.invoke(query)


    requirements:
    openai
    langchain
    langchain_openai
    langchain_experimental
    langchainhub
    pinecone
    python-dotenv
    tiktoken
    docx2txt
    pypdf
    pinecone-client==2.2.4


    p.s: please don't down vote the question.

    Continue reading...

Compartilhe esta Página