Skip to content

RecursionError: maximum recursion depth exceeded with ElasticVectorSearch during RetrievalQAΒ #8836

Closed
@lauradang

Description

@lauradang

System Info

Langchain version: 0.0.240
Python version: 3.10.2
Elasticsearch version: 7.17.0
System Version: macOS 13.4 (22F66)
Model Name: MacBook Pro
Model Identifier: Mac14,10
Chip: Apple M2 Pro
Total Number of Cores: 12 (8 performance and 4 efficiency)
Memory: 32 GB

Who can help?

@hwchase17 @agola11

Information

  • The official example notebooks/scripts
  • My own modified scripts

Related Components

  • LLMs/Chat Models
  • Embedding Models
  • Prompts / Prompt Templates / Prompt Selectors
  • Output Parsers
  • Document Loaders
  • Vector Stores / Retrievers
  • Memory
  • Agents / Agent Executors
  • Tools / Toolkits
  • Chains
  • Callbacks/Tracing
  • Async

Reproduction

run this using python3 script.py

script.py:

import os

from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
from langchain.document_loaders import TextLoader
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import ElasticVectorSearch


def main():
    text_path = "some-test.txt"
    loader = TextLoader(text_path)
    data = loader.load()

    text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
        chunk_size=1000, chunk_overlap=0
    ) # I have also tried various chunk sizes, but still have the same error

    documents = text_splitter.split_documents(data)

    api_key = "..."
    embeddings = OpenAIEmbeddings(openai_api_key=api_key)

    os.environ["ELASTICSEARCH_URL"] = "..."
    db = ElasticVectorSearch.from_documents(
        documents,
        embeddings,
        index_name="laurad-test",
    )
    print(db.client.info())

    db = ElasticVectorSearch(
        index_name="laurad-test",
        embedding=embeddings,
        elasticsearch_url="..."
    )

    qa = RetrievalQA.from_chain_type(
        llm=ChatOpenAI(temperature=0, openai_api_key=api_key),
        chain_type="stuff",
        retriever=db.as_retriever(),
    )


if __name__ == "__main__":
    main()

Error traceback:

Traceback (most recent call last):
  File "/Users/laurad/dev/LLM/public_test.py", line 46, in <module>
    main()
  File "/Users/laurad/dev/LLM/public_test.py", line 41, in main
    retriever=db.as_retriever(),
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/langchain/vectorstores/base.py", line 458, in as_retriever
    tags.extend(self.__get_retriever_tags())
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/langchain/vectorstores/base.py", line 452, in __get_retriever_tags
    if self.embeddings:
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/langchain/vectorstores/elastic_vector_search.py", line 158, in embeddings
    return self.embeddings
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/langchain/vectorstores/elastic_vector_search.py", line 158, in embeddings
    return self.embeddings
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/langchain/vectorstores/elastic_vector_search.py", line 158, in embeddings
    return self.embeddings
  [Previous line repeated 993 more times]
RecursionError: maximum recursion depth exceeded

Expected behavior

I expect to ask questions and have answers provided back using the langchain.chains.retrieval_qa.base.RetrievalQA class. However, I am getting a RecursionError when creating the retrieval chain.

Note: I do not get the same error when using ChromaDB or OpenSearch as the retriever.

Metadata

Metadata

Assignees

No one assigned

    Labels

    β±­: embeddingsRelated to text embedding models moduleβ±­: vector storeRelated to vector store moduleπŸ€–:bugRelated to a bug, vulnerability, unexpected error with an existing feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions