代码之家  ›  专栏  ›  技术社区  ›  Jinho Yoo

为什么vectorDB没有从嵌入多个CSV文件的数据中返回正确答案

  •  0
  • Jinho Yoo  · 技术社区  · 2 年前

    我正在制作聊天机器人的原型,它可以检索许多CSV文件。此CSV文件具有字段标题、视频ID(Youtube)、文本(描述+转录)。我使用Langchain中的CharacterTextSplitter.from_tiktoken_encoder()将文本拆分为100个标记。因此,每个CSV都有如下结构。所有的视频都是关于汽车的。

    videoId0_0.csv:标题0|videoId0|text_chunk0

    videoId0_1.csv:标题0|videoId0|text_chunk1

    videoId0_2.csv:标题0|videoId0|text_chunk1

    videoId1_0.csv:title1|videoId1|text_chunk0

    videoId1_0.csv:title1|videoId1|text_chunk1

    videoId1_0.csv:title1|videoId1|text_chunk1

    CSV的示例如下所示。

    
    title,videoId,text
    남자들이 꼽는 최고의 세단 ... BMW 신형 5시리즈 프리뷰 / 오토뷰., SiKVRD6fgIU, ★ 오토뷰 시승기는?.....
    
    

    我将这些CSV文件加载到Chroma DB中作为矢量存储,如下所示。

        import os 
        from langchain.chains import RetrievalQAWithSourcesChain
        from langchain.chat_models import ChatOpenAI
        from langchain.document_loaders import DirectoryLoader
        from langchain.embeddings.sentence_transformer import SentenceTransformerEmbeddings
        from langchain.vectorstores import Chroma
        
        
        
        data_path = os.path.join( os.getcwd(), 'duplicated_data' )
        loader = DirectoryLoader(data_path, glob="*.csv")
        docs = loader.load()
        
        embedding_function = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
        
        # load it into Chroma
        db = Chroma.from_documents(docs, embedding_function, persist_directory="./chroma_db")
    

    我通过查询数据 similarity() 如下所示。

    answers = db2.similarity_search("BMW")
    

    但它返回的数据与我的查询无关,例如奔驰、现代,或者返回的数据中没有关于宝马的内容。怎么了?

    0 回复  |  直到 2 年前
    推荐文章