以下是类似于 ollama 和 vllm 的 LLM 框架:
此外,还有一些在 LLM 应用中发挥重要作用的框架,如:
对NLP有了基本认知后,下面祭出一个广为流传的图,这张图信息量比较大,其中最重要的观察就是分成了三支明显分叉,从左到右分别是粉色分支,Encoder-only框架(也叫Auto-Encoder),典型代表如BERT等绿色分支,Encoder-decoder框架,典型代表如T5和GLM等蓝色分支,Decoder-only框架(也叫Auto-Regressive),典型代表如GPT系列/LLaMa/PaLM等Harnessing the Power of LLMs in Practice刚听这三种框架名称可能会有点懵逼,不用担心,先感性认识一下。如下所示横轴代表了输入token,纵轴代表相对应每个位置的输出token左图为encoder-only,输出token都能看到所有输入token。例如$$y_1$$这一行可以看到$$x_1\sim x_5$$输入中图为decoder-only,输出token只能看到历史的输入token。例如$$y_3$$这一行只能看到$$x_1\sim x_3$$输入,$$x_4$$和$$x_5$$并不能看到右图为encoder-decoder,前k个输出token可以看到所有k个输入token,从k+1的输出token开始只能看到历史的输入token。例如$$y_1$$能看到$$x_1\sim x_3$$输入($$y_3$$也可以),而$$y_4$$开始只能看到$$x_1\sim x_4$$输入PS:这里为了方便理解,encoder-decoder简化使用causal with prefix示意,具体详见encoder-decoder章节
促进LLM和整合上下文数据的策略正变得越来越复杂,并且作为产品差异化的来源越来越重要。大多数开发人员通过尝试简单的提示来开始新项目,这些提示包括直接说明(零样本提示)或可能的一些示例输出(少样本提示)。这些提示通常会产生良好的结果,但达不到生产部署所需的准确性水平。下一级的提示技巧旨在将模型响应根据一些事实来源,并提供模型未被训练的外部上下文。[《](https://www.promptingguide.ai/techniques)[提示工程指南](https://www.promptingguide.ai/techniques)[》](https://www.promptingguide.ai/techniques)列出了不少于12(!)种更高级的提示策略,包括思维链、自洽性、生成的知识、思维树、方向刺激以及许多其他策略。这些策略也可以一起使用,以支持文档问题回答,聊天机器人等不同的LLM使用案例。这就是LangChain和LlamaIndex等编排框架大放异彩的地方。它们抽象出许多提示链的细节;与外部API的接口(包括确定何时需要API调用);从向量数据库检索上下文数据;并在多个LLM调用中维持内存。它们还为上述许多常见应用提供了模板。它们的输出是要提交给语言模型的一个提示或一系列提示。这些框架在想要启动应用的业余爱好者和初创公司中被广泛使用,其中LangChain是领导者。LangChain仍然是一个相对新的项目(目前版本为0.0.201),但我们已经开始看到用它构建的应用正在转入生产。一些开发者,特别是LLM的早期采用者,更愿意在生产中切换到原生Python以消除额外的依赖性。但是我们预计,这种自行制作的方法会随着时间的推移,在大多数用例中的使用会减少,这与传统的web应用堆栈有着类似的情况。
经过调研,我决定先采取Langchain+Ollama的技术栈来作为demo实现,当然,后续我也会考虑使用dify、fastgpt等更加直观易用的AI开发平台。整体框架设计思路如下:另外,本次开发的运行环境是Intel Mac,其他操作系统也可以。下载模型等可能需要梯子。Langchain简介https://www.langchain.com/langchainLangchain是当前大模型应用开发的主流框架之一,旨在帮助开发者构建和部署基于大型语言模型(LLM)的应用。它提供了一系列的工具和接口,使得与LLM交互变得简单。通过Langchain,开发者可以轻松创建定制的高级应用,如聊天机器人、问答系统和多种智能应用。Langchain的核心在于其“链”概念,这是一个模块化的组件系统,包括Model I/O(模型输入输出)、Retrieval(数据检索)、Chains(链)、Agents(代理)、Memory(内存)、和Callbacks(回调)。这些组件可灵活组合,以支持复杂的应用逻辑。Model I/O模块负责处理与语言模型的直接交互,包括发送请求和解析响应。Retrieval模块用于增强语言模型的回答能力,通过向量数据库检索相关信息来支持回答生成。Chains模块则是多个组件的集成,用于构建更复杂的应用逻辑。Langchain的生态系统还包括LangSmith、LangGraph和LangServe等工具,这些工具能帮助开发者高效管理从原型到生产的各个阶段,以便优化LLM应用。Ollama简介https://ollama.com/Ollama是一个开箱即用的用于在本地运行大模型的框架。它的主要功能和特点包括: