Closed
Description
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?
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.