Langchain CSV加载器
这不是一个编码问题,而是一个文档中遗漏的内容,目前网上没有提到过。当我使用Langchain的CSVLoader时,想知道我使用的OpenAI嵌入到底是对哪个列进行向量化的。
我之所以这样问,是因为看了下面的代码,我对一个示例CSV进行了向量化,然后在Pinecone上进行了搜索,但每次得到的结果都不相似。我该怎么知道Langchain到底识别了哪个列进行向量化呢?
loader = CSVLoader(file_path=file, metadata_columns=['col2', 'col3', 'col4','col5'])
langchain_docs = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=2000, chunk_overlap=100)
docs = text_splitter.split_documents(langchain_docs)
for doc in docs:
doc.metadata.pop('source')
doc.metadata.pop('row')
my_index = pc_store.from_documents(docs, embeddings, index_name=PINECONE_INDEX_NAME)
我在想,CSVLoader可能是识别了第一列进行向量化。但是,在Pinecone上的搜索结果很糟糕,这让我觉得可能是其他列被向量化了。
1 个回答
1
你可以查看一下docs
这个变量,它是一个包含内容和元数据属性的文档对象列表。
向量化使用文档的内容,如果你想了解更详细的内容,可以参考langchain的csv_loader.py源代码(第98行)。
content = "\n".join(
f"{k.strip()}: {v.strip() if v is not None else v}"
for k, v in row.items()
if k not in self.metadata_columns
)
metadata = {"source": source, "row": i}