不是一个编码问题,而是一个文档遗漏,目前网上没有提到过。使用 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 然后识别 col1 进行矢量化。但是,松果的搜索很糟糕,让我认为其他列正在被矢量化。
您可以检查
docs
变量,这是包含内容和元数据属性的列表的文档对象。
向量化使用Document的内容,更详细的内容可以参考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}