嵌入向量在模型后的作用主要体现在以下方面:
在实际应用中,如在 LangChain 中,本地向量存储使用量较大,而在计算文本片段的嵌入时,OpenAI 占据主导地位,开源提供商如 Hugging Face 等也被较多使用。
加载所需的库和模块。其中,feedparse用于解析RSS订阅源ollama用于在python程序中跑大模型,使用前请确保ollama服务已经开启并下载好模型|从订阅源获取内容下面函数用于从指定的RSS订阅url提取内容,这里只是给了一个url,如果需要接收多个url,只要稍微改动即可。然后,通过一个专门的文本拆分器将长文本拆分成较小的块,并附带相关的元数据如标题、发布日期和链接。最终,这些文档被合并成一个列表并返回,可用于进一步的数据处理或信息提取任务。|为文档内容生成向量这里,我们使用文本向量模型bge-m3。https://huggingface.co/BAAI/bge-m3bge-m3是智源研究院发布的新一代通用向量模型,它具有以下特点:支持超过100种语言的语义表示及检索任务,多语言、跨语言能力全面领先(M ulti-Lingual)最高支持8192长度的输入文本,高效实现句子、段落、篇章、文档等不同粒度的检索任务(M ulti-Granularity)同时集成了稠密检索、稀疏检索、多向量检索三大能力,一站式支撑不同语义检索场景(M ulti-Functionality)从hf下载好模型之后,假设放置在某个路径/path/to/bge-m3,通过下面函数,利用FAISS创建一个高效的向量存储。|实现RAG
接下来,正如我们所看到的,当我们试图解决问题时,我们知道我们擅长什么,不擅长什么,我们会依赖于工具进行计算。你可能也想同样处理你的LLM。特别是,我们可能想要给它们提供计算器、代码解释器等,以及进行搜索的能力,有很多技术可以做到这一点。再次要记住的一点是,这些transformer在默认情况下可能不知道它们不知道的东西。你甚至可能想在提示中告诉transformer,「你在心算方面并不是很好,每当你需要进行大数的加法、乘法或其他操作时,请使用计算器。以下如何使用计算器的,使用这个token组合,等等等等。」你必须真正地写出来,因为模型默认情况下并不知道它擅长什么或不擅长什么,就像你和我一样。接下来,我认为非常有趣的一点是,我们从一个只能检索的世界转变到了完全依赖LLM记忆的世界。但实际上,这两个钟摆之间还有整个检索增强模型的空间,它在实践中表现得非常好。正如我所提到的,Transformer的上下文窗口是其工作记忆。如果你能将与任务相关的任何信息加载到工作记忆中,模型就会表现得非常好,因为它可以立即访问所有的记忆。所以,我认为很多人对基本的检索增强生成非常感兴趣。在底部,我有一个LLaMA索引的例子,它具有一个数据连接器,可以连接到各种类型的数据。你可以索引所有这些数据,并使得LLM可访问它。这里的新兴配方是你取相关的文档,将它们分成块,将它们全部嵌入,并基本上得到表示这些数据的嵌入向量。你将其存储在向量存储中,然后在测试时,你对你的向量存储进行一些查询。你获取可能与你的任务相关的块,并将它们填充到提示中,然后生成。这在实践中可以工作得相当好。
最常用的向量存储正如前面提到的,检索是大语言模型应用程序的重要组成部分。向量存储正在成为检索相关上下文的主要方式。在LangChain中,我们与60多个向量存储集成——最常用的有哪些呢?我们看到本地向量存储是使用量最大的,其中Chroma、FAISS、Qdrant和DocArray均进入前5名。如果根据用户数量来计算,那么使用量最大的自然就是本地的免费向量存储。在托管的提供商中,Pinecone是唯一进入前5名的托管向量存储。Weaviate紧随其后,这表明原生向量数据库目前使用得比后添加向量功能的数据库更多。在那些添加了向量功能的数据库中,我们看到领先的是Postgres(PGVector)、Supabase、Neo4j、Redis、Azure Search和Astra DB。需要注意的是,这些排名基于使用给定提供商的用户数量。[heading1]最常用的嵌入[content]最常用的嵌入为了使用向量存储,您需要为文本片段计算嵌入。那么开发人员是如何做到这一点的呢?与大语言模型类似,OpenAI占据主导地位——但之后我们看到了更多样化。开源提供商使用得更多一些,其中Hugging Face位居第二,GPT4All和Ollama也进入前8名。在托管提供商方面,我们看到Vertex AI实际上超过了AzureOpenAI,Cohere和Amazon Bedrock也不遑多让。