|
|
1
2
正如您在评论中指出的那样,文档插入很可能是以某种“非标准”的方式完成的(尽管您没有分享插入代码)。 通常,如果您计划稍后在LangChain中运行查询,最好留在LangChain工具中进行插入。原因是,LangChain有一个统一的接口,可以让你看到它支持的所有向量存储“看起来都一样”,即使在内部它们可能会对数据使用不同的存储模型。 例如,松果索引只有两个与向量相关的概念:“id”和“元数据”(字典)。因此,LC的Pinecone插件必须填充所有输入文本 in a "text" field of the metadata 被放入索引中(并在检索时将其提取回来)。 这与其他LangChain支持的向量存储不同。例如,如果你查看Cassandra/Astra DB集成,你会看到一个表,其中有一个显式的输入文本列。你可以在这里看到这一点 notebook 这说明了如何使用该向量存储(带一个完整的示例)。顺便说一句,如果你不偏离LangChain抽象层,你可以用一个向量存储交换另一个,而基本上不会改变你的代码。。。正是因为LangChain所做的上述均匀化步骤。 那么,回到松果和朗链。有几种方法可以使用LangChain将行放入向量存储中,这基本上取决于您的源代码(PDF、网页、字符串手动列表、文本文件……等等)。有很多受支持的“文档加载器”,请参阅 here .
以下是在最简单的情况下可以做的事情,即在程序中有一个显式的字符串列表,将它们放入存储中(再次注意:这段代码本质上与向量存储无关)。这个
运行上述命令后,我可以测试您的示例将返回类似以下内容:
请注意,如果你仔细观察
plugin implementation
你注意到一件令人惊讶的事情:即松果客户端
总结一下: 如果您离开LangChain层,请自行承担风险。 此外:您还可以找到更多使用LangChain在矢量存储中加载文档的习惯用法示例 here 而且在这个 full sample app 这些示例适用于Astra DB,但如上所述,如果你不离开抽象,你就不应该担心存储模型中的低级更改。而且,您可能会发现将您的体验扩展到其他矢量商店很方便:) 干杯! |
|
|
2
0
如何创建矢量存储很重要。最好还是坚持使用langchain。
这个
创建矢量库如果你还没有矢量存储,以下是如何创建它并将其用作检索器:
加载矢量库如果你已经在另一个会话中创建了一个向量存储,以下是如何加载它并将其用作检索器:
|