宜宾市网站建设_网站建设公司_UI设计_seo优化
2025/12/22 0:56:09 网站建设 项目流程

参考链接

动手学Ollama教程: https://datawhalechina.github.io/handy-ollama/
Ollama官网:https://ollama.com/

主要内容

介绍了Ollama结合LangChain的使用,可实现流式输出(自,强制缓存内容直接输出)、让大模型调用函数、多模态数据拼接成固定格式、多轮对话、自定义Prompt模板、RAG等。

学习记录

  • 直接看教程的代码,部分可能无法运行,完整的代码还是需要参考提供的 jupyter notebook 链接
  • 大模型可以通过langchain_ollama.ChatOllama.bind_tools来调用编写的函数工具的。我问了下ai,了解到是否调用工具完全由大模型自己决定,但是这个决定并非随意随机,而是有一些因素综合决定:训练时涉及工具、.bind_tools时LangChain 会自动将工具函数信息一结构化格式注入到模型提示词中、大模型的temperature越低会更保守倾向调用工具、问题本身性值是否适合调用工具 等。
  • 了解到大模型中,图片经常被转换为Base6编码,这样可以很方便的在纯文本环境中嵌入图片
  • LangChain 的管道(| 链式调用)是非常重要的功能,直接用ollama包虽然可以创建模型,但不支持被“链”。langchain_ollama.ChatOllama是Ollama模型在LangChain体系中的适配器
  • 很多大模型输入的数据格式都要是类似open ai的字典格式,这是硬性要求
  • 我原以为 LangChain提供的ConversationChain(管理多轮对话工具)可以使所有大模型拥有多轮对话能力,但其实是错误的。模型本身必须能支持多轮对话的理解。此外据AI介绍,很多大模型都是无状态的(本质是一个函数,只看给的一段文字),对话历史需要“外部系统”来管理,外部系统将之前消息保存,之后下一次提问将 之前对话历史+新问题 组装到一起,发给新模型
  • 第一次了解RAG的原理细节,可概括为通过prompt(ChatPromptTemplate)明确要求模型只限制在某些方面回答(必须基于特定内容,不能引入外部知识;答案必须原自这些内容,但可以自然语言表达),使得最终输出严格基于向量库检索到的知识。但是AI说不是所有RAG都只靠prompt,还有一些高级做法,如后处理过滤、重排序、假设性文档嵌入、Self-RAG等。
  • 本教程最后的RAG的示例,似乎没有通过阈值过滤,所以总会从向量库中找几个最接近的词给到大模型,所以如果找到的最接近的几个向量关系都不大,可能导致回答比较不符合逻辑。
  • RAG示例代码里nomic-embed-text是个文本嵌入模型;FAISS是一个向量搜索引擎。两者相互协作

学习感想

  • 最大的感受是LangChain很强大,像是大模型的“外套”,可以使得大模型能干更多事情,也能使大模型有条件实现原本具备的能力(例如某个大模型支持多模态,但需要LangChain处理好输入数据格式后输入;例如某个大模型具备多轮对话能力,但需要LangChain缓存拼接好历史的对话,在下一轮中与新问题一起输入给模型)
  • 另外课程最后的RAG示例居然可以这么少的代码就实现基本的RAG功能,原来RAG的实现并非想象中的复杂,而是依赖prompt模板的设计和embedding库
  • 收获颇丰!LangChain真好!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询