【OLLAMA+Langchain】RAG框架详解,RAG和Ollama本地大模型应用方法分享。利用本地大模型搭建私人助理。不用Fine-tuning就能实时更新大语言模型的数据库。

  Рет қаралды 15,979

畅的科技工坊

畅的科技工坊

Күн бұрын

让大模型帮你总结KZfaq视频: • 【大语言模型LLM总结KZfaq内容】G...
Ollama本地部署大语言模型详解: • 【Ollama 使用指南】详解开源大模型管理...
本文的示例代码:colab.research.google.com/dri...
随着大模型的普及,实时更新大模型数据的需求越来越多。除开Fine-tuning,RAG成为了一个低成本,高效率的大模型和数据集成的框架。今天的视频,我来分享RAG的经典架构和工作流。以及通过一个例子,说明如何利用本地部署的大模型,在RAG框架下,搭建一个文档助理。
00:00-01:01 Open 开场介绍
01:02-02:21 Brief Intro RAG 简介
02:22-04:48 RAG Architecture&Workflow RAG 架构和工作流详解
04:49-13:24 Code Sharing & Demo 代码细节分享和演示

Пікірлер: 67
@kun7407
@kun7407 5 күн бұрын
幫助極大!!!!!
@szy0syz
@szy0syz 4 ай бұрын
谢谢楼主,又get了新知识~
@SaySaySee
@SaySaySee 2 ай бұрын
2:45 3:30 RAG框架
@myftptoyman0
@myftptoyman0 Ай бұрын
我覺得這一套流程對於一些文件轉工程式文檔非常有效. 例如規格書轉成標準的程式或者轉譯成其他工程軟體的輸入。
@chang-workshop
@chang-workshop Ай бұрын
同意!最好配合fine tuned的專業model,效果更加出色。
@singlewinggg
@singlewinggg 4 ай бұрын
樓主的逐步示範幫助很大😇 請問匯入的範例檔案以PDF為主,不知道能否也匯入.doc .txt之類的文件呢? 另外這個套框架支援複數檔案的匯入嗎?
@chang-workshop
@chang-workshop 4 ай бұрын
完全可以的,這些都可以歸類為text,在langchain裡面可以找到相應的loader。之前我有做一期AI model處理KZfaq視頻檔案的內容,可以參考。不過那個還不是multimodal,是通過speech2text API轉換成text。
@singlewinggg
@singlewinggg 4 ай бұрын
@@chang-workshop 馬上來跟進!
@macsym
@macsym 2 ай бұрын
请问如果我想调用自己数据库的数据给大模型,是否也用RAG和这套方案?有什么好的建议,谢谢
@chang-workshop
@chang-workshop 2 ай бұрын
是的,听起来这就是典型的RAG能解决的问题。不过RAG得核心是数据引入,所以要看看你数据形式,还有你希望最好给用户呈现的形式
@aroonsubway2079
@aroonsubway2079 3 ай бұрын
请问 RAG+LLM可以处理类似CSV表格的数据吗?比如数据格式是 Day1, 0:01:05,Sleeping 代表某日某时间的行为,分析这类数据输出某日某时间发生特定行为的概率。如果用传统概率分析方法,做起来很容易,但是假如想用RAG+LLM完成这个工作,请问应该如何建模,有没有什么现成的OLLAMA的例子可以参考?
@chang-workshop
@chang-workshop 3 ай бұрын
Hi 我理解这个需求是可以满足的,但是LLM+RAG可能不是最好的方案,我比较推荐试试PandasAI➕OpenAI API或者OLLAMA的本地模型的方式,更加灵活,而且处理数据是强项。我近期正在计划一个影片分享,后续欢迎关注哈
@aroonsubway2079
@aroonsubway2079 3 ай бұрын
@@chang-workshop 谢谢老师分享,我查一下PandasAI+Ollama的例子。
@Heaven.-way
@Heaven.-way 3 ай бұрын
谢谢楼主
@simonpeter9617
@simonpeter9617 4 ай бұрын
请问rag+LLM,到底有多少用处? 谢谢
@chang-workshop
@chang-workshop 4 ай бұрын
好问题,其实取决于你的数据,我觉得大概两方面吧,一方面是llm数据更新成本减少,在普通用户中普及更快。另外就是目前大模型都是通用型的比较多,不同来源数据可以很快接入LLM制作一些特定行业的LLM。 还有一个挺有意思,就是如果你想做fine-tuning,可以用一套LLM+RAG作为训练输出设备,提高训练的效率。我个人觉得挺有前景的。
@xuanyao8920
@xuanyao8920 3 ай бұрын
楼主,文章调用FastEmbedEmbeddings时候提示下面的信息。 pydantic.v1.error_wrappers.ValidationError: 1 validation error for FastEmbedEmbeddings __root__ Could not download model BAAI/bge-small-en-v1.5 from any source. (type=value_error)
@chang-workshop
@chang-workshop 3 ай бұрын
这个看起来好像是连接问题,你的代码环境可以访问huggingface不?另外即使是全局魔法,可能也需要看看huggingface有没有在白名单里面
@xuanyao8920
@xuanyao8920 2 ай бұрын
@@chang-workshop 我换了一个ollama的Embedding,就不报错了
@zuyoung127
@zuyoung127 Ай бұрын
M芯片跑langchain是速度是不是很慢,还是说我没有设置对?
@chang-workshop
@chang-workshop Ай бұрын
我理解,你指的是Ollama+Langchain吧。目前M芯片上还没有特殊的优化。运行速度一定程度上还取决于你使用的模型尺寸和Mac的内存。如果模型过大,而Mac内存不太够,Ollama会把模型放到虚拟内存,那么存取速度就会慢很多,所以一半会建议尽量用体量稍微小一点的模型,或者尽量选用大内存的Mac。根据Ollama的作者,后续他会更新Mac版本,优化运行速度,不过目前还没有动静。
@singlewinggg
@singlewinggg 3 ай бұрын
嘗試用繁體中文作為輸入的文檔, 還有觀察他回答的問題, 感覺效果不太好 (對於提供的PDF文件內容沒有完全理解採用, 用的還是大語言模型本身所知的訊息), 如果想要提升RAG技術的準確度, 樓主可有建議?, 還是說只能換個LLM模型 / 使用sys prompt 等方法微調輸出的結果?
@chang-workshop
@chang-workshop 3 ай бұрын
RAG框架,搭建很容易,但是調整比較花功夫。我說下我自己的理解,但是抱歉,可能沒辦法在comment裡面說明的很詳細 其實,優化還是有很多事情可以做的,我個人認為有幾個方法可以嘗試, 1. 優化數據,一個是最好能structure數據,並且添加一些meta data,比如日期,地點,書名,作者等等,可以優化similarity search。 2. 優化embedding model。可以嘗試不同的embedding model,甚至於自己tuning 一個embedding model 3. 優化RAG 執行流程,可以查看下similarity search的結果,把結果都打印出來, 然後手動選擇最合適的結果,對框架調優,比如調整輸出內容候選集合,比如調整chain的模式,stuff或者mapreduce看看那種模式更加適合retriever輸出的數據。 RAG框架下,對於LLM的要求其實相對來說不高。不過也建議儘量使用相關語言的LLM。目前特別用中文語料訓練的open source LLM不太多。OLLAMA的library裡面有一個。也可以試試Gemini Pro或者GPT4,這些LLM 對於不同語言支持會比OpenSource效果好很多。 另外,關於fine tuning,使用場景相對RAG少太多了。RAG可能是未來一段時間的主流框架。 我正在準備一支關於fine tuning的分享影片,敬請期待。:D
@swordhuang4906
@swordhuang4906 2 ай бұрын
@@chang-workshop 我也遇到樓主一樣的問題! 有些問題回答的還可以,有些就答非所問了!!! 換不同的 LLM model 會有改善...期待您的影片!!
@chang-workshop
@chang-workshop 2 ай бұрын
@@swordhuang4906 最近我在PandasAI影片裡面做了一些簡單的模型對比,我目前感覺依然是商業化得LLM,例如Gemini和OpenAI最好用,Ollama的local LLM,建議用最新的LLAMA3,不過也需要看laptop或者pc的配置,选择合适的尺寸。另外,最近看到很多 tuned過的LLAMA3,據說表現還不錯,後面找機會測試下分享給大家參考
@swordhuang4906
@swordhuang4906 2 ай бұрын
@@chang-workshop 謝謝您分享!
@user-sz9kh4st7p
@user-sz9kh4st7p 2 ай бұрын
请问视频中的代码可以共享吗?
@chang-workshop
@chang-workshop 2 ай бұрын
没问题,就在视频下方描述里面,colab共享链接就是代码
@ang3946
@ang3946 2 ай бұрын
請問一下如果是自己finetune的模型要怎麼引用
@chang-workshop
@chang-workshop 2 ай бұрын
需要載入你finetuned模型的gguf檔案。然後通過OLLAMA載入。載入方法可以看這裡的文章,Customize a model。 然後就可以同使用其它模型一樣載入這個新的model了。
@ang3946
@ang3946 2 ай бұрын
@@chang-workshop 您好,你說看哪裡的文章我這邊沒看到文章連結
@chang-workshop
@chang-workshop 2 ай бұрын
sorry,我忘貼在上一條comment裡面。github.com/ollama/ollama/blob/main/README.md ,請參考這文章裡面Customize a model這個section
@ang3946
@ang3946 2 ай бұрын
@@chang-workshop 感謝你~~我看看
@samwang1228
@samwang1228 2 ай бұрын
想請問有辦法讓輸出是一個一個字輸出而不是等算完才輸出嗎?
@chang-workshop
@chang-workshop 2 ай бұрын
Hi yes,是有辦法的。如果你也是用Gradio+OLLAMA,那麼需要做兩件事情。 1. 在OLLAMA的響應當中設置stream=true。 2.在Gradio的output function裡面用yield 替代 return。 OLLAMA設置stream可以參考這篇文章python.langchain.com/docs/integrations/llms/ollama/ , Gradio可以參考這篇文章 www.gradio.app/guides/key-features#streaming-outputs 。 希望可以幫到你
@samwang1228
@samwang1228 2 ай бұрын
@@chang-workshop 不好意思OLLAMA的響應設置要怎麼改 有點不太懂
@chang-workshop
@chang-workshop 2 ай бұрын
Hi 抱歉,可能是我解釋的不清楚。如果你可以看到我的分享的代碼。可以看到裡面設置了一個 hpChain。 我的代碼裡面用的是 hpChain.invoke 。如果你希望用stream,那麼你需要寫成 hpChain.stream(message),然后根据Gradio里面的Generator的方法输出内容。不过这个方式我确实还没有在代码里面实现,稍晚我这边更新代码,实验成功的话会再次分享。如果你实验成功,也欢迎分享:D
@samwang1228
@samwang1228 2 ай бұрын
@@chang-workshop 謝謝您的回覆 我也來試試看!
@samwang1228
@samwang1228 2 ай бұрын
@@chang-workshop 我實作出來了謝謝樓主,另外想請教有辦法同時做到rag+讓模型有記憶能力嗎?
@nebulaworld915
@nebulaworld915 2 күн бұрын
感谢分享,请问有分析多个PDF文档,然后生成内容的好方案嘛
@chang-workshop
@chang-workshop 2 күн бұрын
Hi,目前我还没做。不过稍早有网友讨论过,最好的办法司机独立一个数据ingestion得workflow,然后把vectordb档案保存到硬盘上,理论上可以实现,如果需要demo的话,我看看稍晚找机会实现出来分享。感谢关注
@nebulaworld915
@nebulaworld915 2 күн бұрын
@@chang-workshop 感谢解答,如果每个pdf都独立一个workflow,pdf内容存在相互关联怎么解决呀,因为用户询问的答案可能会在多个文档或者文档内容之间存在关联性
@chang-workshop
@chang-workshop 2 күн бұрын
好问题,理论上存在一个vector空间可以建立同一个索引retriever。有一个比较笨重的办法,场景一:一次性上传多份文档,合并之后制作vector retriver,把向量数据库存在本地。 场景二,每次增量更新时都把原先文件读出来重新制作一次向量数据库然后存在本地。 其它办法,我也尝试探索,如果你有什么好方案,欢迎分享哈
@user-gi8tp9wk8p
@user-gi8tp9wk8p 4 ай бұрын
想問一下可以提供這裡的config.json嗎?另外LLM model是哪裡下載的?感謝
@chang-workshop
@chang-workshop 4 ай бұрын
hi,沒問題。 首先config文件內容,我添加到colab裡面了,下面鏈接可以查看,其實蠻簡單,我就用它設置了LLM model的名稱,不過一定要和ollama裡面model名稱保持一致。可以用ollama list命令查看。 第二個問題, ollama具備模型分發的能力,只需要 ollama run [model name],首次使用時候,就會自動下載。 可以看我之前分享的ollama使用的視頻。 colab: colab.research.google.com/drive/1itHDlZjO5m4ig6_2iJAiHB5u-50GhOL5?usp=sharing Ollama model library: ollama.com/library 希望可以幫到你
@user-gi8tp9wk8p
@user-gi8tp9wk8p 4 ай бұрын
@@chang-workshop感謝您的清晰教學與即時回覆。想再請問一下 Colab檔案共享其他人看得到嗎?在哪個資料夾呀?因為我剛剛打開找不到QQ 不確定是不是因為只有看到自己的檔案 不好意思打擾了 謝謝您
@chang-workshop
@chang-workshop 4 ай бұрын
colab分享有點類似Google drive,其實也是存在gdrive上面。我的這個link設置成了 有鏈接即可見 的分享,所以把鏈接給其他人的話也是可以看到的。如果遇到權限問題,可以跟我講,我再去調整看看
@user-gi8tp9wk8p
@user-gi8tp9wk8p 4 ай бұрын
@@chang-workshop 不好意思 再次打擾 我是看不到config.json的檔案 不知道路徑要在哪裡看到 謝謝您
@chang-workshop
@chang-workshop 4 ай бұрын
你可以打開colab檔案嗎?如果可以打開這個link,在最上方,第一個block就是config.json的內容。目前就一個item
@akiba700
@akiba700 3 ай бұрын
我在修改代碼後出現了,ui 是能順利運行,但輸入什麼問題都回答不了, requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=11434): Max retries exceeded with url: /api/chat (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) 請問發生了什麼事了😥
@chang-workshop
@chang-workshop 3 ай бұрын
看起來你的ollama服務沒有bind道這個port,你是在docker上面安裝的ollama嗎,如果是docker安裝,可能需要配置port。如果不是,可以看看你的11434的port有沒有被佔用嗎?
@akiba700
@akiba700 3 ай бұрын
@@chang-workshop 所有代碼都是在COLAB上運行, colab.research.google.com/drive/11KdIIAH0FJ7jj4jRkSSo7gC3jIHHv51P?usp=sharing
@akiba700
@akiba700 3 ай бұрын
@@chang-workshop 所有代碼都是在colab上運行:colab.research.google.com/drive/11KdIIAH0FJ7jj4jRkSSo7gC3jIHHv51P?usp=sharing
@akiba700
@akiba700 3 ай бұрын
@@chang-workshop 我是在colab上運行的
@chang-workshop
@chang-workshop 2 ай бұрын
明白了,这段代码可能需要你复制到local运行,local需要运行Ollama才可以。
Red❤️+Green💚=
00:38
ISSEI / いっせい
Рет қаралды 83 МЛН
Llegó al techo 😱
00:37
Juan De Dios Pantoja
Рет қаралды 54 МЛН
Gemma 2 - Local RAG with Ollama and LangChain
14:42
Sam Witteveen
Рет қаралды 15 М.
Open Source RAG running LLMs locally with Ollama
10:00
Weaviate • Vector Database
Рет қаралды 22 М.
什么是LangChain,RAG?AI开发者如何学习RAG?
10:53
AI开发者-就爱瞎鼓捣
Рет қаралды 4 М.
Supercharge your Python App with RAG and Ollama in Minutes
9:42
Matt Williams
Рет қаралды 31 М.
Reliable, fully local RAG agents with LLaMA3
21:19
LangChain
Рет қаралды 106 М.
Looks very comfortable. #leddisplay #ledscreen #ledwall #eagerled
0:19
LED Screen Factory-EagerLED
Рет қаралды 4 МЛН
КРУТОЙ ТЕЛЕФОН
0:16
KINO KAIF
Рет қаралды 6 МЛН