<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI on F嘉阳</title><link>https://blog.fjy8018.top/tags/ai/</link><description>Recent content in AI on F嘉阳</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sun, 30 Mar 2025 16:20:10 +0800</lastBuildDate><atom:link href="https://blog.fjy8018.top/tags/ai/index.xml" rel="self" type="application/rss+xml"/><item><title>本地LLM训练</title><link>https://blog.fjy8018.top/archives/291/</link><pubDate>Sun, 30 Mar 2025 11:44:00 +0800</pubDate><guid>https://blog.fjy8018.top/archives/291/</guid><description>&lt;h2 id="参考资料"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;参考资料&#10;&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/jingyaogong/minimind" target="_blank" rel="noopener"&#10; &gt;jingyaogong/minimind&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="环境准备"&gt;&lt;a href="#%e7%8e%af%e5%a2%83%e5%87%86%e5%a4%87" class="header-anchor"&gt;&lt;/a&gt;环境准备&#10;&lt;/h2&gt;&lt;p&gt;本地环境配置&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;CPU 12700&lt;/li&gt;&#10;&lt;li&gt;内存 32G DDR4 3200&lt;/li&gt;&#10;&lt;li&gt;GPU RTX 2060Super&lt;/li&gt;&#10;&lt;li&gt;系统 Win11&lt;/li&gt;&#10;&lt;li&gt;CUDA 12.6&lt;/li&gt;&#10;&lt;li&gt;Python 3.12&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;由于需要本地编译，windows环境需要安装&lt;strong&gt;Microsoft Visual C++ 编译器&lt;/strong&gt;，tiktoken编译需要rust环境，安装地址：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://visualstudio.microsoft.com/visual-cpp-build-tools/" target="_blank" rel="noopener"&#10; &gt;Build Tools for Visual Studio&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://rustup.rs/" target="_blank" rel="noopener"&#10; &gt;rustup.rs - The Rust toolchain installer&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;克隆并安装环境&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/jingyaogong/minimind.git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; minimind&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install -r requirements.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意：此处不建议使用清华源、也不建议使用conda虚拟环境，会导致pytorch包版本匹配失败&lt;/p&gt;&#10;&lt;p&gt;依赖安装检查，执行以下代码&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;torch&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__version__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cuda&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cuda&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;is_available&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输入如下即成功&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;(&lt;/span&gt;base&lt;span class="o"&gt;)&lt;/span&gt; PS F:&lt;span class="se"&gt;\j&lt;/span&gt;ava_workspace&lt;span class="se"&gt;\m&lt;/span&gt;inimind&amp;gt; python .&lt;span class="se"&gt;\t&lt;/span&gt;est_env.py&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2.6.0+cu126&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;12.6&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;True&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;按照文档指引下载默认的预训练集和监督训练集&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://www.modelscope.cn/datasets/gongjy/minimind_dataset/files" target="_blank" rel="noopener"&#10; &gt;minimind_dataset · 数据集&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="训练过程"&gt;&lt;a href="#%e8%ae%ad%e7%bb%83%e8%bf%87%e7%a8%8b" class="header-anchor"&gt;&lt;/a&gt;训练过程&#10;&lt;/h2&gt;&lt;h3 id="预训练"&gt;&lt;a href="#%e9%a2%84%e8%ae%ad%e7%bb%83" class="header-anchor"&gt;&lt;/a&gt;预训练&#10;&lt;/h3&gt;&lt;p&gt;执行预训练&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python train_pretrain.py&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="file-20250329180305778" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fjy8018.top/images/recovered/ed35f099beb68ef9c0d6.png"&gt;&#10;在我的环境下需要3小时才能完成预训练&lt;/p&gt;&#10;&lt;p&gt;执行预训练，得到&lt;code&gt;pretrain_*.pth&lt;/code&gt;作为预训练的输出权重（其中为模型的dimension，默认为512）&#10;&lt;img alt="file-20250329205630234" class="gallery-image" data-flex-basis="467px" data-flex-grow="194" height="375" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/本地LLM训练/file-20250329205630234.png" width="730"&gt;&lt;/p&gt;&#10;&lt;h3 id="监督微调"&gt;&lt;a href="#%e7%9b%91%e7%9d%a3%e5%be%ae%e8%b0%83" class="header-anchor"&gt;&lt;/a&gt;监督微调&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python train_full_sft.py&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;执行监督全参数微调，在我的环境下需要2.5小时&#10;&lt;img alt="file-20250329210505564" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fjy8018.top/images/recovered/27840e78e795fa10d888.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="file-20250329233223537" class="gallery-image" data-flex-basis="966px" data-flex-grow="402" height="160" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/本地LLM训练/file-20250329233223537.png" width="644"&gt;&lt;/p&gt;&#10;&lt;h2 id="效果测试"&gt;&lt;a href="#%e6%95%88%e6%9e%9c%e6%b5%8b%e8%af%95" class="header-anchor"&gt;&lt;/a&gt;效果测试&#10;&lt;/h2&gt;&lt;p&gt;测试全参微调&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python eval_model.py --model_mode &lt;span class="m"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="file-20250330084041529" class="gallery-image" data-flex-basis="411px" data-flex-grow="171" height="1132" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/本地LLM训练/file-20250330084041529.png" width="1939"&gt;&lt;/p&gt;&#10;&lt;p&gt;从结果来看，能进行对话，但受限于参数量，很多知识不完整，对话回答质量比较一般。&lt;/p&gt;&#10;&lt;h2 id="模型优化"&gt;&lt;a href="#%e6%a8%a1%e5%9e%8b%e4%bc%98%e5%8c%96" class="header-anchor"&gt;&lt;/a&gt;模型优化&#10;&lt;/h2&gt;&lt;p&gt;受本地环境限制，只能完成监督微调步骤，后续步骤执行会爆显存，耗时显著增加。&#10;后续学习改为使用阿里云PAI-DSW环境&lt;/p&gt;&#10;</description></item><item><title>DeepSeek 本地部署开启联网搜索</title><link>https://blog.fjy8018.top/archives/289/</link><pubDate>Sun, 09 Feb 2025 17:28:00 +0800</pubDate><guid>https://blog.fjy8018.top/archives/289/</guid><description>&lt;h2 id="背景"&gt;&lt;a href="#%e8%83%8c%e6%99%af" class="header-anchor"&gt;&lt;/a&gt;背景&#10;&lt;/h2&gt;&lt;p&gt;由于官方DeepSeek频繁不可用，第三方API站点部署的全量模型无法联网，因此有需要联网推理的场景只能使用本地部署解决。&lt;/p&gt;&#10;&lt;h2 id="环境"&gt;&lt;a href="#%e7%8e%af%e5%a2%83" class="header-anchor"&gt;&lt;/a&gt;环境&#10;&lt;/h2&gt;&lt;p&gt;CPU：12700&#10;内存：32G DDR4 3200&#10;显卡：RTX 2060 Super&lt;/p&gt;&#10;&lt;h2 id="模型准备"&gt;&lt;a href="#%e6%a8%a1%e5%9e%8b%e5%87%86%e5%a4%87" class="header-anchor"&gt;&lt;/a&gt;模型准备&#10;&lt;/h2&gt;&lt;p&gt;受显存限制，使用ollama只能下载8b和14b模型。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;8b模型可以完全加载到显存中，使用cuda推理。&lt;/li&gt;&#10;&lt;li&gt;14b模型需要利用CPU+GPU混合推理。&#10;&lt;img alt="file-20250209141718762.png" class="gallery-image" data-flex-basis="506px" data-flex-grow="211" height="674" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/DeepSeek本地部署开启联网搜索/file-20250209141718762.png" width="1423"&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;本地下载开源docker镜像open-webui&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d -p 3000:8080 --add-host&lt;span class="o"&gt;=&lt;/span&gt;host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;该镜像下载困难可以手动传到阿里云镜像仓库做一次代理，本次使用我同步的代理镜像启动&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d -p 3000:8080 --add-host&lt;span class="o"&gt;=&lt;/span&gt;host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --rm registry.cn-guangzhou.aliyuncs.com/fjy8018_proxy/open-webui:main&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;首次启动耗时较长，耐心等待，显示如下画面表示启动完成&#10;&lt;img alt="file-20250209142407547.png" class="gallery-image" data-flex-basis="449px" data-flex-grow="187" height="924" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/DeepSeek本地部署开启联网搜索/file-20250209142407547.png" width="1730"&gt;&lt;/p&gt;&#10;&lt;h2 id="联网api"&gt;&lt;a href="#%e8%81%94%e7%bd%91api" class="header-anchor"&gt;&lt;/a&gt;联网API&#10;&lt;/h2&gt;&lt;p&gt;进入http://localhost:3000/admin/settings 点击联网搜索配置搜索引擎&#10;&lt;img alt="file-20250209142632172.png" class="gallery-image" data-flex-basis="624px" data-flex-grow="260" height="696" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/DeepSeek本地部署开启联网搜索/file-20250209142632172.png" width="1811"&gt;&lt;/p&gt;&#10;&lt;p&gt;目前有3种免费的联网搜索API，各有优劣&lt;/p&gt;&#10;&lt;h3 id="duckduckgo"&gt;&lt;a href="#duckduckgo" class="header-anchor"&gt;&lt;/a&gt;Duckduckgo&#10;&lt;/h3&gt;&lt;p&gt;优点：免费，无需API配置&#10;缺点：网络无法直接访问。&lt;/p&gt;&#10;&lt;h3 id="bing-search"&gt;&lt;a href="#bing-search" class="header-anchor"&gt;&lt;/a&gt;Bing Search&#10;&lt;/h3&gt;&lt;p&gt;优点：免费，国内网络可直连。&#10;缺点：需要微软账户+信用卡认证。&lt;/p&gt;&#10;&lt;h3 id="google-search"&gt;&lt;a href="#google-search" class="header-anchor"&gt;&lt;/a&gt;Google Search&#10;&lt;/h3&gt;&lt;p&gt;优点：免费，搜索内容可靠。&#10;缺点：需要配置，网络无法直连。&lt;/p&gt;&#10;&lt;p&gt;此处为保障最好的搜索质量，使用Google搜索API接入。&lt;/p&gt;&#10;&lt;h4 id="申请api和密钥"&gt;&lt;a href="#%e7%94%b3%e8%af%b7api%e5%92%8c%e5%af%86%e9%92%a5" class="header-anchor"&gt;&lt;/a&gt;申请API和密钥&#10;&lt;/h4&gt;&lt;p&gt;进入谷歌可编程搜索引擎官网：&lt;a class="link" href="https://developers.google.com/custom-search?hl=zh-cn" target="_blank" rel="noopener"&#10; &gt;Programmable Search Engine  |  Google for Developers&lt;/a&gt; 创建搜索引擎&#10;&lt;img alt="file-20250209143003526.png" class="gallery-image" data-flex-basis="969px" data-flex-grow="403" height="387" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/DeepSeek本地部署开启联网搜索/file-20250209143003526.png" width="1563"&gt;&lt;/p&gt;&#10;&lt;p&gt;点击控制面板&#10;&lt;img alt="file-20250209143022106.png" class="gallery-image" data-flex-basis="689px" data-flex-grow="287" height="404" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/DeepSeek本地部署开启联网搜索/file-20250209143022106.png" width="1161"&gt;&lt;/p&gt;&#10;&lt;p&gt;创建搜索引擎，名称任意&#10;&lt;img alt="file-20250209143108637.png" class="gallery-image" data-flex-basis="188px" data-flex-grow="78" height="1376" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/DeepSeek本地部署开启联网搜索/file-20250209143108637.png" width="1078"&gt;&lt;/p&gt;&#10;&lt;p&gt;创建后得到搜索引擎ID&#10;&lt;img alt="file-20250209143200907.png" class="gallery-image" data-flex-basis="314px" data-flex-grow="131" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/DeepSeek本地部署开启联网搜索/file-20250209143200907.png" width="1235"&gt;&lt;/p&gt;&#10;&lt;p&gt;选择程序化访问&#10;&lt;img alt="file-20250209143216062.png" class="gallery-image" data-flex-basis="737px" data-flex-grow="307" height="390" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/DeepSeek本地部署开启联网搜索/file-20250209143216062.png" width="1199"&gt;&lt;/p&gt;&#10;&lt;p&gt;获取密钥&#10;&lt;img alt="file-20250209143244278.png" class="gallery-image" data-flex-basis="606px" data-flex-grow="252" height="625" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/DeepSeek本地部署开启联网搜索/file-20250209143244278.png" width="1579"&gt;&lt;/p&gt;&#10;&lt;h4 id="配置联网搜索"&gt;&lt;a href="#%e9%85%8d%e7%bd%ae%e8%81%94%e7%bd%91%e6%90%9c%e7%b4%a2" class="header-anchor"&gt;&lt;/a&gt;配置联网搜索&#10;&lt;/h4&gt;&lt;p&gt;选择google pse，填写密钥和搜索ID&#10;&lt;img alt="file-20250209143347970.png" class="gallery-image" data-flex-basis="568px" data-flex-grow="237" height="775" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/DeepSeek本地部署开启联网搜索/file-20250209143347970.png" width="1837"&gt;&lt;/p&gt;&#10;&lt;h2 id="验证"&gt;&lt;a href="#%e9%aa%8c%e8%af%81" class="header-anchor"&gt;&lt;/a&gt;验证&#10;&lt;/h2&gt;&lt;h3 id="8b--联网搜索"&gt;&lt;a href="#8b--%e8%81%94%e7%bd%91%e6%90%9c%e7%b4%a2" class="header-anchor"&gt;&lt;/a&gt;8b + 联网搜索&#10;&lt;/h3&gt;&lt;p&gt;使用8b+联网搜索验证&#10;&lt;img alt="file-20250209145225878.gif" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fjy8018.top/images/recovered/57dd520b810eb73609a7.gif"&gt;&lt;/p&gt;&#10;&lt;p&gt;容器日志可以看到搜索到的文本内容&#10;&lt;img alt="file-20250209145333195.png" class="gallery-image" data-flex-basis="411px" data-flex-grow="171" height="1008" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/DeepSeek本地部署开启联网搜索/file-20250209145333195.png" width="1730"&gt;&lt;/p&gt;&#10;&lt;p&gt;8b联网+推理显存沾满，显卡满载，但不需要CPU参与推理，32token/s，速度较快。&#10;&lt;img alt="file-20250209144633904.png" class="gallery-image" data-flex-basis="342px" data-flex-grow="142" height="718" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/DeepSeek本地部署开启联网搜索/file-20250209144633904.png" width="1026"&gt;&lt;/p&gt;&#10;&lt;h3 id="14b联网搜索"&gt;&lt;a href="#14b%e8%81%94%e7%bd%91%e6%90%9c%e7%b4%a2" class="header-anchor"&gt;&lt;/a&gt;14b+联网搜索&#10;&lt;/h3&gt;&lt;p&gt;&lt;img alt="file-20250209151556837.png" class="gallery-image" data-flex-basis="325px" data-flex-grow="135" height="1076" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/DeepSeek本地部署开启联网搜索/file-20250209151556837.png" width="1460"&gt;&#10;改成14b后，token速度下降到7token/s，勉强可用。&lt;/p&gt;&#10;&lt;p&gt;由于显存不足，需要CPU+GPU混合推理，显卡cuda性能无法完全利用，CPU占用率高。&#10;&lt;img alt="file-20250209151543095.png" class="gallery-image" data-flex-basis="295px" data-flex-grow="123" height="832" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/DeepSeek本地部署开启联网搜索/file-20250209151543095.png" width="1026"&gt;&lt;/p&gt;&#10;</description></item><item><title>基于 ChatGLM2-6B 搭建个人知识库</title><link>https://blog.fjy8018.top/archives/286/</link><pubDate>Wed, 06 Sep 2023 22:43:00 +0800</pubDate><guid>https://blog.fjy8018.top/archives/286/</guid><description>&lt;h2 id="背景"&gt;&lt;a href="#%e8%83%8c%e6%99%af" class="header-anchor"&gt;&lt;/a&gt;背景&#10;&lt;/h2&gt;&lt;p&gt;ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B的第二代版本，提升了性能和推理能力，可结合Langchain-Chatchat和Embedding 可实现基于本地知识库的推理能力&lt;/p&gt;&#10;&lt;h2 id="准备环境"&gt;&lt;a href="#%e5%87%86%e5%a4%87%e7%8e%af%e5%a2%83" class="header-anchor"&gt;&lt;/a&gt;准备环境&#10;&lt;/h2&gt;&lt;p&gt;由于需要构建强大的知识库而非通过prompt组装问答方式，故需要更大的显存和内存，此处直接使用阿里云提供的A10显卡，可免费试用3个月&lt;/p&gt;&#10;&lt;h3 id="申请机器"&gt;&lt;a href="#%e7%94%b3%e8%af%b7%e6%9c%ba%e5%99%a8" class="header-anchor"&gt;&lt;/a&gt;申请机器&#10;&lt;/h3&gt;&lt;p&gt;&lt;img alt="1" class="gallery-image" data-flex-basis="436px" data-flex-grow="181" height="1900" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/1.png" width="3456"&gt;&lt;/p&gt;&#10;&lt;h3 id="创建工作空间"&gt;&lt;a href="#%e5%88%9b%e5%bb%ba%e5%b7%a5%e4%bd%9c%e7%a9%ba%e9%97%b4" class="header-anchor"&gt;&lt;/a&gt;创建工作空间&#10;&lt;/h3&gt;&lt;p&gt;&lt;img alt="2" class="gallery-image" data-flex-basis="579px" data-flex-grow="241" height="948" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/2.png" width="2290"&gt;&lt;/p&gt;&#10;&lt;h3 id="创建实例"&gt;&lt;a href="#%e5%88%9b%e5%bb%ba%e5%ae%9e%e4%be%8b" class="header-anchor"&gt;&lt;/a&gt;创建实例&#10;&lt;/h3&gt;&lt;p&gt;&lt;img alt="3" class="gallery-image" data-flex-basis="920px" data-flex-grow="383" height="772" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/3.png" width="2960"&gt;&lt;/p&gt;&#10;&lt;p&gt;启动机器后进入工作台&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="4" class="gallery-image" data-flex-basis="478px" data-flex-grow="199" height="963" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/4.png" width="1920"&gt;&lt;/p&gt;&#10;&lt;h2 id="部署chatglm2-6b"&gt;&lt;a href="#%e9%83%a8%e7%bd%b2chatglm2-6b" class="header-anchor"&gt;&lt;/a&gt;部署ChatGLM2-6B&#10;&lt;/h2&gt;&lt;h3 id="下载仓库"&gt;&lt;a href="#%e4%b8%8b%e8%bd%bd%e4%bb%93%e5%ba%93" class="header-anchor"&gt;&lt;/a&gt;下载仓库&#10;&lt;/h3&gt;&lt;p&gt;参考&lt;a class="link" href="https://github.com/THUDM/ChatGLM2-6B" target="_blank" rel="noopener"&#10; &gt;官方仓库&lt;/a&gt;的部署指南&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git clone https://github.com/THUDM/ChatGLM2-6B&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; ChatGLM2-6B&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后使用 pip 安装依赖：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ pip install -r requirements.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="5" class="gallery-image" data-flex-basis="953px" data-flex-grow="397" height="354" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/5.png" width="1406"&gt;&lt;/p&gt;&#10;&lt;h3 id="安装git-lfs"&gt;&lt;a href="#%e5%ae%89%e8%a3%85git-lfs" class="header-anchor"&gt;&lt;/a&gt;安装git lfs&#10;&lt;/h3&gt;&lt;p&gt;阿里云的git源直接安装lfs会存在问题，需要安装前置依赖&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ apt -y install build-essential nghttp2 libnghttp2-dev libssl-dev&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git lfs install --skip-smudge&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="下载模型"&gt;&lt;a href="#%e4%b8%8b%e8%bd%bd%e6%a8%a1%e5%9e%8b" class="header-anchor"&gt;&lt;/a&gt;下载模型&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git clone https://huggingface.co/THUDM/chatglm2-6b /mnt/workspace/model/chatglm2-6b&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git lfs fetch&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git lfs checkout&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="6" class="gallery-image" data-flex-basis="346px" data-flex-grow="144" height="598" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/6.png" width="863"&gt;&lt;/p&gt;&#10;&lt;h3 id="修改启动配置"&gt;&lt;a href="#%e4%bf%ae%e6%94%b9%e5%90%af%e5%8a%a8%e9%85%8d%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;修改启动配置&#10;&lt;/h3&gt;&lt;p&gt;此处只使用webUI模式验证，修改 web_demo.py&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/mnt/workspace/model/chatglm2-6b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;trust_remote_code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModel&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/mnt/workspace/model/chatglm2-6b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;trust_remote_code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;half&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cuda&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 要暴露在公网上&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;demo&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;queue&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;launch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;share&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;inbrowser&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;server_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;0.0.0.0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;server_port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;7860&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装启动依赖&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ pip install gradio&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="启动webui"&gt;&lt;a href="#%e5%90%af%e5%8a%a8webui" class="header-anchor"&gt;&lt;/a&gt;启动WebUI&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ python web_demo.py&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="7" class="gallery-image" data-flex-basis="1069px" data-flex-grow="445" height="278" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/7.png" width="1239"&gt;&lt;/p&gt;&#10;&lt;p&gt;启动成功&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="8" class="gallery-image" data-flex-basis="435px" data-flex-grow="181" height="1320" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/8.png" width="2396"&gt;&lt;/p&gt;&#10;&lt;p&gt;使用非量化模型，显存占用12G&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="9" class="gallery-image" data-flex-basis="222px" data-flex-grow="92" height="838" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/9.png" width="778"&gt;&lt;/p&gt;&#10;&lt;h3 id="问答验证"&gt;&lt;a href="#%e9%97%ae%e7%ad%94%e9%aa%8c%e8%af%81" class="header-anchor"&gt;&lt;/a&gt;问答验证&#10;&lt;/h3&gt;&lt;p&gt;&lt;img alt="10" class="gallery-image" data-flex-basis="378px" data-flex-grow="157" height="1178" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/10.png" width="1857"&gt;&lt;/p&gt;&#10;&lt;p&gt;基于A10显卡推理，运算速度非常快，对问题的理解能力也比之前体验的chatglm-6b更加准确，但依然有不少文字错误&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="chatglm2-6b问答1" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fjy8018.top/images/recovered/5005f04394cf5db652a3.gif"&gt;&lt;/p&gt;&#10;&lt;h2 id="部署langchain知识库应用"&gt;&lt;a href="#%e9%83%a8%e7%bd%b2langchain%e7%9f%a5%e8%af%86%e5%ba%93%e5%ba%94%e7%94%a8" class="header-anchor"&gt;&lt;/a&gt;部署Langchain知识库应用&#10;&lt;/h2&gt;&lt;h3 id="介绍"&gt;&lt;a href="#%e4%bb%8b%e7%bb%8d" class="header-anchor"&gt;&lt;/a&gt;介绍&#10;&lt;/h3&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;Langchain-Chatchat是一种利用 &lt;a class="link" href="https://github.com/hwchase17/langchain" target="_blank" rel="noopener"&#10; &gt;langchain&lt;/a&gt; 思想实现的基于本地知识库的问答应用，目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;原理示意图&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="langchain+chatglm" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/langchain+chatglm.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;更多介绍参考&lt;a class="link" href="https://github.com/chatchat-space/Langchain-Chatchat" target="_blank" rel="noopener"&#10; &gt;官方仓库&lt;/a&gt;&lt;/p&gt;&#10;&lt;h3 id="下载仓库-1"&gt;&lt;a href="#%e4%b8%8b%e8%bd%bd%e4%bb%93%e5%ba%93-1" class="header-anchor"&gt;&lt;/a&gt;下载仓库&#10;&lt;/h3&gt;&lt;p&gt;Langchain依赖的python包有些许差别，需要先升级python依赖版本&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ pip3 install --upgrade pip&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ pip uninstall accelerate&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ pip install accelerate&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;0.20.3&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 拉取仓库&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git clone https://github.com/chatchat-space/Langchain-Chatchat.git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 进入目录&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; Langchain-Chatchat&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 安装全部依赖&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ pip install -r requirements.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="11" class="gallery-image" data-flex-basis="750px" data-flex-grow="312" height="529" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/11.png" width="1654"&gt;&lt;/p&gt;&#10;&lt;h3 id="下载embedding模型"&gt;&lt;a href="#%e4%b8%8b%e8%bd%bdembedding%e6%a8%a1%e5%9e%8b" class="header-anchor"&gt;&lt;/a&gt;下载Embedding模型&#10;&lt;/h3&gt;&lt;p&gt;此处使用官方推荐的&lt;code&gt;m3e-base&lt;/code&gt;模型为例&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git clone https://huggingface.co/moka-ai/m3e-base&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git lfs fetch&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git lfs checkout&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="12" class="gallery-image" data-flex-basis="344px" data-flex-grow="143" height="535" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/12.png" width="768"&gt;&lt;/p&gt;&#10;&lt;h3 id="修改配置"&gt;&lt;a href="#%e4%bf%ae%e6%94%b9%e9%85%8d%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;修改配置&#10;&lt;/h3&gt;&lt;p&gt;修改Langchain模型引用配置&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; Langchain-Chatchat&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;复制样例文件，创建新配置&lt;code&gt;configs/model_config.py&lt;/code&gt; 和 &lt;code&gt;configs/server_config.py&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;本地的 LLM 模型本地存储路径写在 &lt;code&gt;llm_model_dict&lt;/code&gt; 对应模型的 &lt;code&gt;local_model_path&lt;/code&gt; 属性中&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;llm_model_dict&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;chatglm2-6b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;local_model_path&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/mnt/workspace/model/chatglm2-6b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;api_base_url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;http://127.0.0.1:9090/v1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# &amp;#34;name&amp;#34;修改为 FastChat 服务中的&amp;#34;api_base_url&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;api_key&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;EMPTY&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;本地的 Embedding 模型本地存储路径写在 &lt;code&gt;embedding_model_dict&lt;/code&gt; 对应模型位置&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;embedding_model_dict&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;m3e-base&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/mnt/workspace/model/m3e-base&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="13" class="gallery-image" data-flex-basis="305px" data-flex-grow="127" height="875" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/13.png" width="1112"&gt;&lt;/p&gt;&#10;&lt;h3 id="重建知识库"&gt;&lt;a href="#%e9%87%8d%e5%bb%ba%e7%9f%a5%e8%af%86%e5%ba%93" class="header-anchor"&gt;&lt;/a&gt;重建知识库&#10;&lt;/h3&gt;&lt;p&gt;首次使用模型需要重建知识库&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ python init_database.py --recreate-vs&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="14" class="gallery-image" data-flex-basis="506px" data-flex-grow="211" height="883" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/14.png" width="1864"&gt;&lt;/p&gt;&#10;&lt;h3 id="启动知识库"&gt;&lt;a href="#%e5%90%af%e5%8a%a8%e7%9f%a5%e8%af%86%e5%ba%93" class="header-anchor"&gt;&lt;/a&gt;启动知识库&#10;&lt;/h3&gt;&lt;p&gt;一键启动所有 Fastchat 服务、API 服务、WebUI 服务&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ python startup.py -a&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="15" class="gallery-image" data-flex-basis="254px" data-flex-grow="105" height="1591" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/15.png" width="1684"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="16" class="gallery-image" data-flex-basis="236px" data-flex-grow="98" height="1702" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/16.png" width="1674"&gt;&lt;/p&gt;&#10;&lt;h3 id="问答验证-1"&gt;&lt;a href="#%e9%97%ae%e7%ad%94%e9%aa%8c%e8%af%81-1" class="header-anchor"&gt;&lt;/a&gt;问答验证&#10;&lt;/h3&gt;&lt;p&gt;LLM模型验证，连接本地ChatGLM2-6B成功&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="17" class="gallery-image" data-flex-basis="236px" data-flex-grow="98" height="1702" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/17.png" width="1674"&gt;&lt;/p&gt;&#10;&lt;p&gt;工程自带样例知识库，可以使用内置知识库验证，此处跳过，直接使用个人知识库验证&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="18" class="gallery-image" data-flex-basis="236px" data-flex-grow="98" height="1702" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/18.png" width="1674"&gt;&lt;/p&gt;&#10;&lt;h2 id="构建知识库"&gt;&lt;a href="#%e6%9e%84%e5%bb%ba%e7%9f%a5%e8%af%86%e5%ba%93" class="header-anchor"&gt;&lt;/a&gt;构建知识库&#10;&lt;/h2&gt;&lt;h3 id="基金研报知识库"&gt;&lt;a href="#%e5%9f%ba%e9%87%91%e7%a0%94%e6%8a%a5%e7%9f%a5%e8%af%86%e5%ba%93" class="header-anchor"&gt;&lt;/a&gt;基金研报知识库&#10;&lt;/h3&gt;&lt;p&gt;从天天基金拉取研报：&lt;a class="link" href="https://fund.eastmoney.com/a/202309062838610791.html" target="_blank" rel="noopener"&#10; &gt;中信证券：把握宏观政策接连发力下电商板块估值修复机会_天天基金网 (eastmoney.com)&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;将内容存储为txt上传到知识库&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="19" class="gallery-image" data-flex-basis="236px" data-flex-grow="98" height="1702" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/19.png" width="1674"&gt;&lt;/p&gt;&#10;&lt;p&gt;基于基金研报知识库问答，总结准确，速度非常快&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="20" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fjy8018.top/images/recovered/5a72b19c32c396a54a30.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;推理过程日志，显存占用14G&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="21" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fjy8018.top/images/recovered/09f3d24cfddb5ac8c17b.png"&gt;&lt;/p&gt;&#10;&lt;h3 id="个人面试知识库"&gt;&lt;a href="#%e4%b8%aa%e4%ba%ba%e9%9d%a2%e8%af%95%e7%9f%a5%e8%af%86%e5%ba%93" class="header-anchor"&gt;&lt;/a&gt;个人面试知识库&#10;&lt;/h3&gt;&lt;p&gt;将Java并发知识点转为txt类型知识库上传并创建新的知识库空间&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="22" class="gallery-image" data-flex-basis="236px" data-flex-grow="98" height="1702" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/22.png" width="1674"&gt;&lt;/p&gt;&#10;&lt;p&gt;不使用知识库情况下回答&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="23" class="gallery-image" data-flex-basis="400px" data-flex-grow="167" height="1002" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/23.png" width="1674"&gt;&lt;/p&gt;&#10;&lt;p&gt;使用知识库情况下回答&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="24" class="gallery-image" data-flex-basis="274px" data-flex-grow="114" height="1465" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/基于ChatGLM2-6B搭建个人知识库/24.png" width="1674"&gt;&lt;/p&gt;&#10;&lt;p&gt;显然使用知识库回答更加准确&lt;/p&gt;&#10;</description></item></channel></rss>