代码之家  ›  专栏  ›  技术社区  ›  Diego Quirós

在langchain和openAI嵌入中无法从链中获取源文档

  •  0
  • Diego Quirós  · 技术社区  · 1 年前

    我正在使用langchain.document_loaders加载pdf:

    loader = DirectoryLoader( './files/', glob='*.pdf', loader_cls=PyPDFLoader)

    然后拆分文档,创建嵌入,存储并加载它们:

    docsearch = Chroma.from_documents(texts, embeddings, persist_directory=persist_directory)
    
    ...
    
    docsearch = Chroma(persist_directory, embedding_function=embeddings ) 
    retriever = docsearch.as_retriever( search_kwargs={"k": 5})
    docs = retriever.get_relevant_documents( query )
    len( docs)
    

    我得到了正确的答案,但我没有得到源文档。

    0 回复  |  直到 1 年前
        1
  •  1
  •   HamidReza Saad    12 月前

    如果你正确设置了加载器,下面的代码应该可以工作(这是一个例子,你可以更改chunk_size或其他字段):

    loader = DirectoryLoader( './files/', glob='*.pdf', loader_cls=PyPDFLoader)
    documents = loader.load()
    text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
    texts = text_splitter.split_documents(documents)
    embeddings = OpenAIEmbeddings()
    docsearch = Chroma.from_documents(texts, embeddings, persist_directory=persist_directory)
    retriever = docsearch.as_retriever( search_kwargs={"k": 5})
    docs = retriever.get_relevant_documents( query )
    len( docs)
    
        2
  •  0
  •   Diego Quirós    12 月前

    错误发生在:

    docsearch = Chroma(persist_directory, embedding_function=embeddings ) 
    

    应该是:

    docsearch = Chroma(persist_directory=persist_directory, embedding_function=embeddings ) 
    
        3
  •  0
  •   HaX.Alvin    10 月前

    a的第一个构造函数 Chroma 对象是 collection_name .
    你应该通过 persist_directory 变量到 持久性目录 构造函数参数。
    所以它看起来像这样:

    docsearch = Chroma(persist_directory=persist_directory, embedding_function=embeddings)
    
    推荐文章