构建本地知识库(上): langchain+ollama构建本地大模型应用

Langchain系列(一)----手把手教你接入本地部署的ollama大模型,小白上手 最近很多网友后台私信我,因为Langchain官网示例的大多是国外的大模型平台,比如:ChatGPT等,需要科学上网,学习不方便。所以,接下来,我来教大家如何使用Langchain接入本地部署的ollama大模型。 阅读详情

目标

在本地个人电脑上搭建一个基于大模型的本地知识库。在这个过程中能够实践并学习:

  1. 如何在本地部署运行大模型
  2. 如何基于大模型开发应用程序
  3. 如何利用RAG构建本地知识库

资源准备

要实现这个目标,需要考虑几个问题:

  1. 如何在本地设备上部署大模型?能部署哪些大模型?
  2. 应该如何基于大模型构建应用?
  3. 如何构建RAG应用?

对于问题1,我们需要一个大模型,这个大模型相对于正常大模型而言比较小,以满足能在我们本地设备上跑起起来的需求(CPU only),同时我们需要寻找一个工具,这个功能最好是能够帮助我们快速的下载,部署运行大模型。对于问题2,3我们应当寻找一个AI应用构建的框架,来帮我们快速集成大模型,构建应用。

LLaMA

LLaMA(英语:Large Language Model Meta AI)是Meta AI公司于2023年2月发布的大型语言模型。它训练了各种模型,这些模型的参数从70亿到650亿不等。LLaMA的开发人员报告说,LLaMA运行的130亿参数模型在大多数NLP基准测试中的性能超过了更大的、具有1750亿参数的GPT-3提供的模型,且LLaMA的模型可以与PaLM和Chinchilla等最先进的模型竞争。虽然其他强大的大语言模型通常只能通过有限的API访问,但Meta在非商业许可的情况下发布了LLaMA的模型权重,供研究人员参考和使用。2023年7月,Meta推出LLaMA2,这是一种可用于商业应用的开源AI模型。2024年4月18日,Meta发布了Llama 3。

在LLaMA中,有各种不同参数大小的模型可供选择,非常适合用来在本地做研究和学习。

使用OpenAI或者其他的模型可能需要先获取相应的key,并可能产生计费!因此,作为学习目的的话我们还是最好使用本地部署的大模型来进行。

Ollama

Ollama 是一个便于本地部署和运行大型语言模型(Large Language Models, LLMs)的工具。使用通俗的语言来说,如果你想在自己的电脑上运行如 GPT-3 这样的大型人工智能模型,而不是通过互联网连接到它们,那么 Ollama 是一个实现这一目标的工具。

主要功能

  1. 本地运行大型语言模型:Ollama 允许用户在自己的设备上直接运行各种大型语言模型,包括 Llama 2、Mistral、Dolphin Phi 等多种模型。这样用户就可以在没有网络连接的情况下也能使用这些先进的人工智能模型。
  2. 跨平台支持:Ollama 支持 macOS、Windows(预览版)、Linux 以及 Docker,这使得几乎所有主流操作系统的用户都可以利用这个工具。
  3. 语言库和第三方库支持:它提供了一个模型库,用户可以从中下载并运行各种模型。此外,也支持通过 ollama-python 和 ollama-js 等库与其他软件集成。
  4. 快速启动和易于定制:用户只需简单的命令就可以运行模型。对于想要自定义模型的用户,Ollama 也提供了如从 GGUF 导入模型、调整参数和系统消息以及创建自定义提示(prompt)的功能。

LangChain

LangChain 是一个用于开发由语言模型驱动的应用程序的框架。它使得应用程序能够:

  • 具有上下文感知能力:将语言模型连接到上下文来源(提示指令,少量的示例,需要回应的内容等)
  • 具有推理能力:依赖语言模型进行推理(根据提供的上下文如何回答,采取什么行动等)

这个框架由几个部分组成。

  • LangChain 库:Python 和 JavaScript 库。包含了各种组件的接口和集成,一个基本的运行时,用于将这些组件组合成链和代理,以及现成的链和代理的实现。
  • LangChain 模板:一系列易于部署的参考架构,用于各种任务。
  • LangServe:一个用于将 LangChain 链部署为 REST API 的库。
  • LangSmith:一个开发者平台,让你可以调试、测试、评估和监控基于任何 LLM 框架构建的链,并且与 LangChain 无缝集成。

更多langchain内容请参考官网

Conda(可选)

Conda 是一款功能强大的命令行工具,用于包和环境管理,可在 Windows、macOS 和 Linux 上运行。它可以快速的安装和更新环境依赖。例如,我想在我的电脑上需要同时python2和python3的环境,因为有的项目依赖python2,有的项目依赖python3。如果没有conda,会是很麻烦的事,而conda可以解决不同项目的环境依赖问题,可以隔离出两个环境分别让具有不同依赖的两个项目使用。

更多conda相关内容请参考官网

环境搭建

下载Ollama

进入官网,点击【Dpwonload】,然后选择适合自己机器的版本进行下载

在这里插入图片描述
在这里插入图片描述

以windows为例。下载完成后,点击安装包进行安装。这里有个坑稍微注意下:安装默认是不能够选择安装路径的,这就导致默认会安装到C盘。后续下载的模型也会进入C:\Users<用户名>.ollama\models目录下。一般来说模型会比较大(通常是几十G),这就会导致C盘资源很快会被占满。解决方法是:设置OLLAMA_MODELS环境变量, 使模型下载到指定的路径。修改后重启Ollama生效。

在这里插入图片描述

有两个环境变量需要注意:

OLLAMA_MODELS:OLLAMA模型的下载路径。

OLLAMA_HOST: OLLAMA模型以服务方式运行的时候,即提供API,默认是只能被localhost访问的,设置这个为0.0.0.0,可以被网络访问。

下载大模型

安装完成之后,会弹出对话框(或者手动开启命令行),接下来开始下载大模型。在官网可以看到有哪些模型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

等待模型下载完成。

启动Lamma服务

运行命令ollama run llama3:8b,启动模型,此时可以和模型开始进行对话。效果如下:
在这里插入图片描述

下载Conda(可选)

去Anaconda官网进行下载。下载后按提示进行安装。注意选择自己的安装路径!安装完成后可以通过Anaconda Promot进入操作页面,进行环境创建。

在这里插入图片描述

创建一个环境名叫langchain,用于等会运行langchanin,这个环境下的python版本是3.12

在这里插入图片描述

安装后激活环境

在这里插入图片描述

下载LangChain

如果没有安装conda, 那么使用命令:

pip install langchain

如果已经在conda中并且激活了环境,也可以执行下面命令

conda install langchain -c conda-forge

然后等待相关包的下载

在这里插入图片描述

启动LangChain服务

参考官方代码,我们写一个简单的基于大模型的服务代码,利用langServer提供api服务。这里有些点需要注意:

  1. 官方代码中用的大模型是基于OpenAI的,但我们期望的是通过本地模型进行访问。因此,我们要对本地模型进行封装,保证代码访问的是我们本地的模型。
  2. 如果想要让langchain应用程序提供对外访问的api服务,可以使用langchain提供的langServer能力,使用命令

pip install "langserve[all]"进行安装。

完整代码如下:

python
 代码解读
#!/usr/bin/env python
from typing import List

from fastapi import FastAPI
# from langchain_core.prompts import ChatPromptTemplate
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langserve import add_routes
import ollama

class CustomLLM1:
    @property
    def _llm_type(self) -> str:
        # 返回我们自定义的模型标记
        return "myLlaMA"
    #     return ChatResult(generations=[generation])
    def __call__(self, prompt: str) -> str:
        # 这里是调用自定义模型或API接口的逻辑
        # print(prompt)
        messages = [
            {"role": "user", "content": prompt.to_string()},
            # 如果需要,可以在这里添加更多的消息历史
        ]

        response = self.llama_completion(messages)
        return response 

    def llama_completion(self, messages: List[dict]) -> str:
        # 调用llama的接口,返回响应
        # return "Hello from llama!"
        print(messages)
        response = ollama.chat(model='llama3:8b', messages=messages)
        print(response['message']['content'])
        return response['message']['content']

# 1. Create prompt template
prompt_template = PromptTemplate(input_variables=[], template="Translate the following into {language}:{text}")

# 2. Create model
model = CustomLLM1()
# 3. Create parser
parser = StrOutputParser()

# 4. Create chain
chain = prompt_template | model | parser

# 4. App definition
app = FastAPI(
  title="LangChain Server",
  version="1.0",
  description="A simple API server using LangChain's Runnable interfaces",
)

# 5. Adding chain route

add_routes(
    app,
    chain,
    path="/chain",
)

if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app, host="localhost", port=8000)

启动后效果如下:

在这里插入图片描述

访问地址: http://localhost:8000/chain/playground/。页面上会出现两个待输入的内容:

在这里插入图片描述

本地测试

我们这里尝试一个简单的例子:将文本转换成特定语言进行输出。我们设置了两个输入,分别是语言和要转换的内容。运行结果成功返回了大模型处理之后的结果。

在这里插入图片描述

总结

本章主要阐述了本地构建基于大模型的应用程序的过程。从资源准备分析到实际搭建,一步步的指导应该如何在本地搭建一个基于大模型的应用程序。感兴趣的小伙伴可以自己动手试一下。

下一篇文章中我们基于此利用RAG技术来构建完整的本地知识库。

PS:本人电脑配置:windows系统,4核8G。
​

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

大模型技术学习系列(4): langchain+ollama构建本地大模型应用 本章主要阐述了本地构建基于大模型的应用程序的过程。从资源准备分析到实际搭建,一步步的指导应该如何在本地搭建一个基于大模型的应用程序。 阅读详情

相关推荐

LangChain实战:从零构建RAG应用与本地大模型部署完整指南

检索增强生成(RAG)技术通过结合外部知识库与大语言模型,显著提升了AI问答的准确性和专业性。其核心原理是将文档向量化存储,在用户提问时快速检索相关信息作为上下文输入模型。这种技术架构特别适合企业知识库、文档问答等需要精准信息检索的场景。在实际工程实践中,本地大模型部署成为保障数据隐私的关键环节,配合向量数据库构建完整的RAG系统。本教程基于LangChain框架,详细演示了如何利用Ollama工具实现全链路本地化部署,涵盖从环境配置、文档处理到API服务封装的完整流程,为开发者提供了一套可落地的私有化AI

weixin_30859423的博客 551

Langchain + Ollama

伊织 2024-03-20。

AI工程化、开源分享、文档翻译、代码笔记 9278

Ollama教程——使用langchain:ollama与langchain的强强联合

在当今技术迅速发展的时代,利用最新的人工智能技术来处理复杂的数据和文档成为了开发者们追求的目标。ollama和langchain作为两个强大的工具,能够帮助我们更加高效地完成这项任务。本文将深入探讨如何将ollama与langchain结合使用,通过一个具体的示例——处理和理解《奥德赛》这一经典文献——来展示其强大的实战应用能力。本文适合具有一定编程经验的中高级开发者,旨在通过丰富的技术细节和实战代码,帮助读者掌握这两个工具的高效结合使用方法。

walkskyer的博客 9622

LLMChain使用初探 -- OLLaMA+LangChain搭建本地大模型

LLMChain是一个简单的链,接受一个提示模板,使用用户输入格式化它并从LLM返回响应。其中,prompt_template是一个非常关键的组件,可以让你创建一个非常简单的链,它将接收用户输入,使用它格式化提示,然后将其发送到LLM。

sinat_29950703的博客 2万+

MATLAB语言的并发编程

并发编程是指在同一程序中同时执行多个计算任务。通过将任务分解为较小的子任务,程序可以利用多核处理器的优势,提高计算效率。并发编程与并行编程密切相关,但不完全相同。并行编程强调任务的同时执行,而并发编程则侧重于任务的调度与管理,即使某些任务并没有同时执行。MATLAB的并发编程为数据分析、科学计算等应用提供了强大的支持。通过使用parforparfevalspmd等工具,用户可以轻松实现高效的并行计算。尽管MATLAB的并发编程工具相对简单易用,但在实际应用中仍需关注数据共享、通信、错误处理等问题。

2501_90485575的博客 365

红外小目标检测新思路:当DETR遇上Mamba状态空间模型,速度提升3倍

本文探讨了将Mamba状态空间模型与DETR框架结合,用于解决红外小目标检测的难题。该创新方案通过线性复杂度的Mamba模块替代传统Transformer的自注意力机制,在保持高检测精度的同时,显著提升了推理速度,实现了实时性能的突破,为无人机巡检、安防监控等场景提供了高效解决方案。

hhh00的博客 665

【LLM大模型】构建本地知识库(上): langchain+ollama构建本地大模型应用

【LLM大模型】构建本地知识库(上): langchain+ollama构建本地大模型应用

huang9604的博客 2417

TIA博途V15.1实战:用PLCSIM Advanced V2.0模拟Modbus TCP/IP通信(附完整DB块配置)

本文详细介绍了如何在TIA博途V15.1环境中,利用PLCSIM Advanced V2.0软件仿真S7-1500 PLC的Modbus TCP/IP通信功能。通过实战步骤,重点解析了MB_SERVER指令调用、连接参数(CONNECT)配置以及核心数据块(DB)的映射方法,并附上了完整的DB块配置示例,帮助工程师在无物理硬件条件下高效完成通信逻辑的验证与调试。

m2n3o4p5的博客 408

构建本地知识库: langchain+ollama构建本地大模型应用

本章主要阐述了本地构建基于大模型的应用程序的过程。从资源准备分析到实际搭建,一步步的指导应该如何在本地搭建一个基于大模型的应用程序。感兴趣的小伙伴可以自己动手试一下。下一篇文章中我们基于此利用RAG技术来构建完整的本地知识库。PS:本人电脑配置:windows系统,4核8G。

2401_85375298的博客 2089

Ubuntu下全面解析硬盘健康:从基础检测到性能优化

本文详细介绍了在Ubuntu系统中如何全面监测硬盘健康状态。从安装smartmontools工具、解读SMART关键属性(如重新分配扇区计数、通电时间),到进行性能基准测试(使用dd和fio),最后根据检测结果提供针对性的优化与预警方案,帮助用户有效预防数据丢失并提升硬盘可靠性。

weixin_29223603的博客 287

VMware Workstation Pro 16 安装 Ubuntu 20.04

VMware Workstation Pro 16 安装 ubuntu 20.04目录环境VMware Workstation下载Ubuntu 20.04下载安装过程 目录 环境 Windows 10 Workstation 16 Pro for Windows Ubuntu 20.04 LTS 64位 desktop版本 VMware Workstation下载 链接: https://www.vmware.com/products/workstation-pro/workstation-pro-eval

qq_45642410的博客 1万+

构建本地RAG知识库(上): langchain+ollama构建本地大模型应用

本章主要阐述了本地构建基于大模型的应用程序的过程。从资源准备分析到实际搭建,一步步的指导应该如何在本地搭建一个基于大模型的应用程序。感兴趣的小伙伴可以自己动手试一下。

Langchain的博客 1148

一个超酷的开源uHand2.0机械手掌项目

uHand2.0是深圳乐幻索尔公司开源的一款机械手掌,它长下面这个样子:1、uHand2.0外观图之前在公众号就分享过视频:学习嵌入式可以带娃,不信你们看2、uHand2.0硬件原理图看...

Bruce.yang的嵌入式之旅 4460

构建本地知识库(上): Langchain+ollama构建本地大模型应用(附教程)

构建本地知识库(上): Langchain+ollama构建本地大模型应用(附教程)

瓦罗兰特顶级C位的博客 1016

突破Cloudflare 5秒盾:Python爬虫+GPT分析JS混淆,零基础也能爬

传统突破Cloudflare 5秒盾的门槛极高,需要精通JS逆向、浏览器指纹伪造、行为模拟,而本文的“Playwright+GPT”方案,彻底降低了门槛——无需懂逆向、无需手动改指纹、无需写复杂JS代码,只需3步就能突破大部分网站的防护。低门槛:新手1小时内就能上手,无需逆向工程知识;高成功率:覆盖80%+的普通防护网站,15%的中等防护网站;易扩展:适配不同类型网站,可结合代理、打码平台升级为高可用系统。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1164

【Python爬虫(1)】专栏开篇:夯实Python基础

要想熟练掌握 Python 爬虫技术,扎实的 Python 基础是必不可少的。这就好比建造高楼大厦,Python 基础就是那稳固的基石。只有打好了这个基础,我们才能在爬虫的学习道路上稳步前行,理解并运用各种爬虫技术和框架。

邓邓子的博客 2026

大模型开发实战:(二)使用 LangChain 构建本地知识库应用

LangChain 是一个大语言模型(LLM)

2401_85773741的博客 1574

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

AI大模型开发实战:(二)使用 LangChain 构建本地知识库应用

LangChain 是一个大语言模型(LLM)编程框架,其目的是简化基于大语言模型的应用开发,统一不同大模型的调用方式,开发者无需关心底层 API 差异。

Y525698136的博客 774

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

大模型开发实战:(二)使用 LangChain 构建本地知识库应用,大模型入门到精通,收藏这篇就足够了!

LangChain 是一个大语言模型(LLM)编程框架,其目的是简化基于大语言模型的应用开发,统一不同大模型的调用方式,开发者无需关心底层 API 差异。

Y525698136的博客 1075

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

本地化知识库RAG系统的构建

大模型应用领域已经呈现出多样化的发展态势,技术和参数的更新速度也相当迅猛。开源社区在推动大模型应用方面发挥着重要作用,不仅如此,还涌现了诸多在线LLM对话问答和知识库检索应用。许多这类应用甚至只需注册即可免费使用,在日常工作中,笔者也经常依赖LLM,并已将其视为不可或缺的工具之一。

瓦罗兰特顶级C位的博客 2179

Ollama+LangChain构建本地知识库-----项目实战开始 项目开源!源码如下!

本文介绍了如何使用本地部署的大模型(qwen3)构建个人知识库。首先确保已通过ollama部署本地模型并准备知识库文件。项目结构包括文档目录、配置文件和主程序入口。通过安装langchain等库实现功能,使用Chroma存储向量数据。核心代码包含配置管理、文档加载与分割、对话链创建等功能。系统支持多格式文档处理,具有token计数和对话历史管理能力。运行后生成本地数据库,使AI能基于用户提供的内容进行问答。该方法实现了简易的本地知识库构建,为个性化AI应用提供了基础方案。

2301_81667623的博客 1253

【AI大模型部署】本地部署私人知识库的大模型!Llama 3 + RAG!

我们探讨Meta AI 的尖端 Llama 3 语言模型构建强大的检索增强生成 (RAG) 来实现。通过利用 Llama 3 和 RAG 技术的功能,我们将创建一个应用程序,允许用户与网页进行交互式对话,检索定制化、私人知识库的相关信息并生成对用户查询的准确响应。在本教程中,我们将深入探讨设置开发环境、加载和处理网页数据、创建嵌入和向量存储以及实现 RAG 链以提供卓越用户体验的分步过程。

2401_85325557的博客 932

LightningIndexerV2 算子使用指南:CANN ops-transformer 中 PyTorch API 的 Top-k 稀疏索引实战

`LightningIndexerV2` 是 CANN ops-transformer 里面向稀疏 Attention 的前置算子:它基于 QK 相关性、ReLU 过滤、W 加权与 Top-k 筛选,为每个 Query token 挑出最相关的 Key 位置,输出可直接喂给后续稀疏 Attention 的索引与取值。本文以 PyTorch API(`lightning_indexer` / `li

gitblog_00423的博客 233
上一篇: 118页|2023大模型落地应用案例集
下一篇: 构建本地知识库(下):使用RAG构建知识库
AI_小站
博客等级 码龄3年 6255粉丝 1152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值