LLM + 最新RAG技術 | 快速建置本地知識庫查詢應用 | 解決生成式AI常見的幻覺問題

Поделиться
HTML-код
  • Опубликовано: 1 окт 2024
  • 大家好,今天我們將會一起學習如何快速建置一個本地知識庫查詢應用,
    這將使用最新的語言模型技術Llama3和檢索增強生成RAG(Retrieval-Augmented Generation)技術。
    希望透過今天的課程,大家可以學習這些最新的技術,帶回到你的工作職場
    進一步的思考,結合單位內的應用場景,然後進行實作落地。
    同時也替你帶來更大的價值,讓你成為組織內創新開發的領頭羊。
    龍龍 希望讓大家能夠應用新技術,提升競爭力,一起成長、共好~~
    如果你還沒有建置一些環境,建議可以先看這個LLM的首部份
    會帶你安裝ollama,這是可以很快建置相關服務的好平台
    • 連我阿嬤都會 Python + 本地端LLM...
    ***課程清單(快速跳轉)***
    01:03 - Demo原生LLM與結合RAG的使用者體驗
    05:13 - RAG是什麼?
    10:02 - 解決方案架構
    10:50 - 安裝套件
    11:30 - 實操演示
    🔹 小額贊助 龍龍AI與程式實戰
    -------------------------------------------------
    🎉方式一:加入頻道會員 (加入後可觀看會員專區的影片喔) / @changlunglung
    🎉方式二:在 RUclips 影片右下角點擊「超級感謝」按鈕
    🎉方式三(請 龍龍 喝咖啡):buymeacoffee.c...
    -------------------------------------------------
    強力推薦,讓你提升職場競爭力課程,由龍龍與巨匠電腦合作:
    零基礎也能搞定:快速學習打造自己的企業級語音轉文字服務!(手刀下單)
    www.worker360....
    ChatGPT全方位職場情境應用:強化提詞效率(手刀下單)
    www.worker360....
    =================================
    🔹與本主題或LLM相關的精選教程
    =================================
    • 實操乾貨 Chat With 不同類型檔案 ...
    • 擁有AI的Reader API 再結合 LL...
    • 創建本地PDF Chatbot with L...
    • 免費線上快速完成第一個客製化LLM模型 | ...
    • 連我阿嬤都會 Python + 本地端LLM...
    • 震撼登場!本地LLM服務全新進化,會說話的A...
    • 2024最新!本地LLM服務驚人進化:連阿嬤...
    • 輕鬆立即搭建本地端Llama3模型 - 使用...
    • 最新OpenAI語音轉文字技術:Whispe...
    • 3分鐘免費完成AI文字轉語音!#文字轉語音 #ai
    🔹 練習用知識QA檔案下載
    docs.google.co...
    🔹 使用到的指令
    安裝嵌入模型:ollama pull mxbai-embed-large
    安裝聯發科LLM模型:ollama run ycchen/breeze-7b-instruct-v1_0
    安裝chromadb(向量庫):pip install chromadb
    🔹 程式碼Code
    import streamlit as st # 導入Streamlit庫,用於建立網頁應用
    import ollama # 導入ollama庫,用於自然語言處理
    import chromadb # 導入chromadb庫,用於數據存儲和查詢
    import pandas as pd # 導入pandas庫,用於數據分析和處理
    定義一個初始化函數,用於設置Streamlit的會話狀態
    def initialize():
    檢查'session_state'(會話狀態)中是否已有'already_executed'這個變量
    這個變量用來檢查是否已經進行過一次資料庫初始化操作
    if "already_executed" not in st.session_state:
    st.session_state.already_executed = False # 若不存在,則設置為False
    如果'already_executed'為False,表示還未初始化過資料庫
    if not st.session_state.already_executed:
    setup_database() # 呼叫setup_database函數來進行資料庫的設置和數據加載
    定義設置資料庫的函數
    def setup_database():
    client = chromadb.Client() # 創建一個chromadb的客戶端,用於與資料庫交互
    file_path = 'QA50.xlsx' # 指定Excel文件的路徑和名稱
    documents = pd.read_excel(file_path, header=None) # 使用pandas讀取Excel文件
    使用chromadb客戶端創建或獲取名為'demodocs'的集合
    collection = client.get_or_create_collection(name="demodocs")
    遍歷從Excel文件中讀取的數據,每一行代表一條記錄
    for index, content in documents.iterrows():
    response = ollama.embeddings(model="mxbai-embed-large", prompt=content[0]) # 通過ollama生成該行文本的嵌入向量
    collection.add(ids=[str(index)], embeddings=[response["embedding"]], documents=[content[0]]) # 將文本和其嵌入向量添加到集合中
    st.session_state.already_executed = True # 設置'already_executed'為True,表示已完成初始化
    st.session_state.collection = collection # 將集合保存在會話狀態中,供後續使用
    定義創建新chromadb客戶端的函數,每次需要時創建新的連接
    def create_chromadb_client():
    return chromadb.Client() # 返回一個新的chromadb客戶端實例
    主函數,負責構建UI和處理用戶事件
    def main():
    initialize() # 呼叫初始化函數
    st.title("我的第一個LLM+RAG本地知識問答") # 在網頁應用中設置標題
    user_input = st.text_area("您想問什麼?", "") # 創建一個文本區域供用戶輸入問題
    如果用戶點擊"送出"按鈕
    if st.button("送出"):
    if user_input:
    handle_user_input(user_input, st.session_state.collection) # 處理用戶輸入,進行查詢和回答
    else:
    st.warning("請輸入問題!") # 如果用戶沒有輸入,顯示警告消息
    定義處理用戶輸入的函數
    def handle_user_input(user_input, collection):
    response = ollama.embeddings(prompt=user_input, model="mxbai-embed-large") # 生成用戶輸入的嵌入向量
    results = collection.query(query_embeddings=[response["embedding"]], n_results=3) # 在集合中查詢最相關的三個文檔
    data = results['documents'][0] # 獲取最相關的文檔
    output = ollama.generate(
    model="ycchen/breeze-7b-instruct-v1_0",
    prompt=f"Using this data: {data}. Respond to this prompt and use chinese: {user_input}" # 生成回應
    )
    st.text("回答:") # 顯示"回答:"
    st.write(output['response']) # 將生成的回應顯示在網頁上
    if _name_ == "__main__":
    main() # 如果直接執行此文件,則執行main函數
    ==================
    #OllamaEmbedding #Local #Nomic #OllamaEmbeddings #OllamaNomic #OllamaNomicEmbedding #NomicEmbedding #NomicEmbeddings #NomicOllama #EmbeddingOllama #Embed #Embedding #LocalRAG #OllamaLocalRAG
    #ollama #runollamalocally #howtoinstallollama #ollamaonmacos #installingollama #localllm #mistral7b #installllmlocally #opensource #llms #opensourceLLM #custommodel #localagents #opensourceAI #llmlocal #localAI #llmslocally #opensource #Olama #Mistral #OllamaMistral #Chroma #ChromaDB #LangChain

Комментарии • 87

  • @hochun836
    @hochun836 27 дней назад +1

    "一次提問多個需求的解決方案" 可以給些 keywords 嗎 ?

    • @changlunglung
      @changlunglung  27 дней назад

      其實理論上就是,先用使用者的提問透過LLM理解,拆解問題,然後跑迴圈在去個別執行。
      但有一個重點,也就是理解的這個LLM要夠強大,不然會錯意就GG會更發散了。

  • @rrrr5545
    @rrrr5545 Месяц назад +2

    請問一下要到哪裡下載LLM模型,還有要怎麼下載向量庫

    • @changlunglung
      @changlunglung  Месяц назад +1

      先參考我這之前這影片安裝ollama,裡面也會教你如何接模型下來。
      ruclips.net/video/3-mJAN5TlaI/видео.html

    • @rrrr5545
      @rrrr5545 Месяц назад

      @@changlunglung 好的謝謝!

  • @許茗翔-g1r
    @許茗翔-g1r Месяц назад +1

    想請問一下
    我跑範例程式到這一行
    collection.add(ids=[str(index)], embeddings=[response["embedding"]], documents=[content[0]])
    會跳Connection error
    Is Streamlit still running? If you accidentally stopped Streamlit, just restart it in your terminal:
    我檢查過每個變數都是正常的
    會不會是硬體設備的問題導致的呢?
    或是說要跑ollama+RAG 需要的硬體規格有哪些

    • @changlunglung
      @changlunglung  Месяц назад

      應該是之前的程式或程序沒正常關掉。
      程式有執行一次就會該port就會被佔用,
      試著把你的開發工具restart或cmd關掉。

  • @diowang8917
    @diowang8917 Месяц назад +2

    pip install chromadb 出現錯誤, python 版本有限制? 我用的是3.12.5版

    • @changlunglung
      @changlunglung  Месяц назад +1

      可以貼一下更多的訊息,我是沒上到那麼新,建議可以試著建虛擬環境,用3.10試試。

    • @diowang8917
      @diowang8917 Месяц назад

      謝謝您的快速回應,錯誤訊息有C++, 我依此找到問題點,安裝Microsoft c++ Build tools 就可以順利安裝chromadb了; 您的教材相當棒,受益良多.. 另外再請教一下,您的範例中OA50.xlsx 檔案要指定路徑?

    • @diowang8917
      @diowang8917 Месяц назад

      QA50.txt 已經解決了,又出現[connect error, Is Streamlit still running?]程式依您提供直接使用,請問我是不是有那個環節出問題?
      1.chromadb OK
      2.streamlit OK (用您首部曲範例)

    • @changlunglung
      @changlunglung  Месяц назад +1

      我剛執行是ok的,記的目前的寫法是要在command中執行streamlit run 你的程式碼.py

    • @diowang8917
      @diowang8917 Месяц назад

      我可以提供我的程式,請您協助測試一下?

  • @mattopolitan2624
    @mattopolitan2624 2 месяца назад +2

    謝謝你的分享,已成功運用所教的代碼和方法,教導通用AI所無法提供的資訊,如最近2024年所發生的事件。 希望下一步能研究自設成後端伺服器, 接駁到自定義前端頁面,或接駁現行熱門的通訊軟件API 實現即時對話。

    • @mattopolitan2624
      @mattopolitan2624 2 месяца назад

      唯獨發現新教導的資訊,AI未能自主地整合到舊有知識庫裡。不知道有沒有解決辦法? 還是得透過重新訓練語言模型?

    • @changlunglung
      @changlunglung  2 месяца назад +2

      llm和rag是分開的,你要大語言模型直接有你自已的知識內容,那就必定要走finetune(微調)模型一途了。

  • @clusslin
    @clusslin 3 месяца назад +1

    請教一下龍龍
    我想在windows 本地微調模型llama3-8B,不想在colab上面運行
    因為我的資料比較隱私,想請教一下
    運行unsloth的code我總會遇到RuntimeError: Failed to find C compiler. Please specify via CC environment variable.
    感覺我就只差這一步了,安裝了vc也無法解決這個問題,請問有什麼好方法嗎

    • @changlunglung
      @changlunglung  3 месяца назад +1

      我自已本地環境的關係,我之前也想在window上搞,環境上也遇到些問題,還沒解掉。
      又加上公務上的事,就也先放在那邊。
      後面我有成功,我會在拍支影片分享。

  • @BloodShadowTW
    @BloodShadowTW 4 месяца назад +2

    能給完整程式碼?Streamlit建起來需要設定嗎?目前其他人都連不進來,想請問問題出在哪?多個pdf 也可以像excel這樣載入嗎?再麻煩您幫忙解答,感謝您

    • @changlunglung
      @changlunglung  4 месяца назад

      影片說明最下方的,已經是完整的程式碼了喔。
      streamlit執行後,應該別人用ip,或者電腦名稱就可以了。
      如果你是家裡面的話,可能都還是內網,而不是連到外網的ip位置。
      這個每個人環境不一樣,不太好給建議喔。

    • @BloodShadowTW
      @BloodShadowTW 4 месяца назад

      @@changlunglung 請問一下喔,使用RAG 用7B Ilm 目的做公司QA系統,您覺得可行嗎?目前使用RAG來做QA回答有時都偏短,有啥可以優化的嗎?

  • @jenha5920
    @jenha5920 Месяц назад +1

    下面if _name_ == "__main__":拼錯了
    是->if __name__=='__main__':

    • @changlunglung
      @changlunglung  Месяц назад

      可能被解析掉了,我這邊看是有底線的。

  • @chenghungtsai138
    @chenghungtsai138 5 дней назад +1

    想請問一下
    會跳Connection error
    Is Streamlit still running? If you accidentally stopped Streamlit, just restart it in your terminal:
    有檢查程式碼都是一樣的
    要怎麼解決?
    謝謝

    • @changlunglung
      @changlunglung  4 дня назад

      如果同時關掉程式編輯器與cmd,並且直接在cmd執行程式看看。
      可能之前在編輯器有運行,被佔住了。

    • @chenghungtsai138
      @chenghungtsai138 4 дня назад

      @@changlunglung 成功跑出頁面了,可是出現這個no such table: collections

    • @changlunglung
      @changlunglung  4 дня назад

      有顯示是第幾行嗎?可以貼上較完整的錯誤內容,比較好幫查。

    • @chenghungtsai138
      @chenghungtsai138 4 дня назад

      @@changlunglung OperationalError: no such table: collections
      Traceback:
      File "C:\Users\user\anaconda3\Lib\site-packages\streamlit
      untime\scriptrunner\script_runner.py", line 542, in _run_script
      exec(code, module.__dict__)
      File "C:\Users\user\PycharmProjects\LLM\try.py", line 66, in
      main() # 如果直接執行此文件,則執行main函數
      ^^^^^^
      File "C:\Users\user\PycharmProjects\LLM\try.py", line 48, in main
      handle_user_input(user_input, st.session_state.collection) # 處理用戶輸入,進行查詢和回答
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\PycharmProjects\LLM\try.py", line 56, in handle_user_input
      results = collection.query(query_embeddings=[response["embedding"]], n_results=3) # 在集合中查詢最相關的三個文檔
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\site-packages\chromadb\api\models\Collection.py", line 196, in query
      query_results = self._client._query(
      ^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\site-packages\chromadb\telemetry\opentelemetry\__init__.py", line 146, in wrapper
      return f(*args, **kwargs)
      ^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\site-packages\tenacity\__init__.py", line 336, in wrapped_f
      return copy(f, *args, **kw)
      ^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\site-packages\tenacity\__init__.py", line 475, in __call__
      do = self.iter(retry_state=retry_state)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\site-packages\tenacity\__init__.py", line 376, in iter
      result = action(retry_state)
      ^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\site-packages\tenacity\__init__.py", line 398, in
      self._add_action_func(lambda rs: rs.outcome.result())
      ^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\concurrent\futures\_base.py", line 449, in result
      return self.__get_result()
      ^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\concurrent\futures\_base.py", line 401, in __get_result
      raise self._exception
      File "C:\Users\user\anaconda3\Lib\site-packages\tenacity\__init__.py", line 478, in __call__
      result = fn(*args, **kwargs)
      ^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\site-packages\chromadb
      ate_limiting\__init__.py", line 47, in wrapper
      return f(self, *args, **kwargs)
      ^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\site-packages\chromadb\api\segment.py", line 719, in _query
      coll = self._get_collection(collection_id)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\site-packages\chromadb\telemetry\opentelemetry\__init__.py", line 146, in wrapper
      return f(*args, **kwargs)
      ^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\site-packages\chromadb\api\segment.py", line 888, in _get_collection
      collections = self._sysdb.get_collections(id=collection_id)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\site-packages\chromadb\telemetry\opentelemetry\__init__.py", line 146, in wrapper
      return f(*args, **kwargs)
      ^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\site-packages\chromadb\db\mixins\sysdb.py", line 428, in get_collections
      rows = cur.execute(sql, params).fetchall()
      ^^^^^^^^^^^^^^^^^^^^^^^^

    • @chenghungtsai138
      @chenghungtsai138 4 дня назад

      @@changlunglung
      有很多行 大概都長這樣,麻煩了 謝謝
      Traceback (most recent call last):
      File "C:\Users\user\anaconda3\Lib\site-packages\streamlit
      untime\scriptrunner\script_runner.py", line 542, in _run_script
      exec(code, module.__dict__)
      File "C:\Users\user\PycharmProjects\LLM\try.py", line 66, in
      main() # 如果直接執行此文件,則執行main函數
      ^^^^^^
      File "C:\Users\user\PycharmProjects\LLM\try.py", line 48, in main
      handle_user_input(user_input, st.session_state.collection) # 處理用戶輸入,進行查詢和回答
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\PycharmProjects\LLM\try.py", line 56, in handle_user_input
      results = collection.query(query_embeddings=[response["embedding"]], n_results=3) # 在集合中查詢最相關的三個文檔
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\site-packages\chromadb\api\models\Collection.py", line 196, in query
      query_results = self._client._query(
      ^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\user\anaconda3\Lib\site-packages\chromadb\telemetry\opentelemetry\__init__.py", line 146, in wrapper
      return f(*args, **kwargs)
      ^^^^^^^^^^^^^^^^^^

  • @gloudsdu
    @gloudsdu 5 месяцев назад +2

    这个RAG能大海捞针吗?漏东西、找错位置的RAG实在不敢用啊

    • @changlunglung
      @changlunglung  5 месяцев назад +5

      謝謝您的回應,
      目前要找到百發百中的模型,應該是沒有,若怕找不到或者怕找到和語意不同的檢索,建議繼續觀望。
      畢竟RAG技術主要一部份是用來解決通用型生成式AI的幻覺,embedding技術是一直在推陳出新。
      總是有在提升,至於是否能落地,還是看每個場景或需求的人的定義。
      RAG裡面若要細部探討還有檢索的內容,資料的整理。
      知道RAG原理,所以有可能越多資料放在一個庫,就越有機會不易區分。
      也包括使用者如果下的詞,本來就語意不清,那就更找不到東西
      但程式也可以寫一些判斷,表示使用者可以在多給提示之類的。
      如果有實作,也代表更清楚目前技術的限制與能耐。
      也因為知道原理,所以山不轉路轉,是不是也可以討論,變通一下,
      例如把大知識庫拆成不同的小庫,用獨立庫的方式,優先解決特定知識查詢。
      如果內部討論沒辦法接受,那就真的只能繼續探索了。
      以上建議。

  • @WuMichael-zi4hk
    @WuMichael-zi4hk 5 месяцев назад +2

    st.session_state has no attribute "already_executed"Did you forget to initialize it? How to fix it?

    • @changlunglung
      @changlunglung  5 месяцев назад +1

      變數的定義在這裡有了,先判斷是否有在st.session_state有定義,沒有就新增already_executed並給初始值False
      我想會不會是streamlit的版本關係
       if "already_executed" not in st.session_state:
      st.session_state.already_executed = False # 若不存在,則設置為False
      # 定義一個初始化函數,用於設置Streamlit的會話狀態
      def initialize():
      # 檢查'session_state'(會話狀態)中是否已有'already_executed'這個變量
      # 這個變量用來檢查是否已經進行過一次資料庫初始化操作
      if "already_executed" not in st.session_state:
      st.session_state.already_executed = False # 若不存在,則設置為False
      # 如果'already_executed'為False,表示還未初始化過資料庫
      if not st.session_state.already_executed:
      setup_database() # 呼叫setup_database函數來進行資料庫的設置和數據加載

  • @CHUN-EN
    @CHUN-EN 3 месяца назад

    出現了ResponseError: invalid character 'N' looking for beginning of value
    請問該怎麼辦QQ

  • @clareliu1997
    @clareliu1997 Месяц назад +1

    多謝你的教學,十分有用!如果我的FAQ是英文,可以令output出英文回答嗎嗎?

    • @changlunglung
      @changlunglung  Месяц назад +1

      將下面程式碼片斷的段的最後一行prompt變數內的字串"Respond to this prompt and use chinese",把and use chinese整個拿掉,應該就不會強制轉,當初是擔心output是簡體中文,所以才會特別去加這個提示詞。
      定義處理用戶輸入的函數
      def handle_user_input(user_input, collection):
      response = ollama.embeddings(prompt=user_input, model="mxbai-embed-large") # 生成用戶輸入的嵌入向量
      results = collection.query(query_embeddings=[response["embedding"]], n_results=3) # 在集合中查詢最相關的三個文檔
      data = results['documents'][0] # 獲取最相關的文檔
      output = ollama.generate(
      model="ycchen/breeze-7b-instruct-v1_0",
      prompt=f"Using this data: {data}. Respond to this prompt and use chinese: {user_input}" # 生成回應
      )

    • @clareliu1997
      @clareliu1997 Месяц назад +1

      @@changlunglung 謝謝你的回覆~ 試了output還是有時候出中文

    • @changlunglung
      @changlunglung  Месяц назад

      那試試保留,但把chinese改成english試試

  • @sc94250
    @sc94250 2 месяца назад +1

    感谢分享, 非常的好!
    问下能否用纯cpu资源实现吗, 需要如何修改相关的代码呢

    • @changlunglung
      @changlunglung  2 месяца назад

      模型由ollama去調度載入,原則上你ollama那邊安裝能執行,就算沒有gpu也行,不需特別設定。

    • @sc94250
      @sc94250 2 месяца назад

      @@changlunglung 谢谢老师

  • @helloworld-x4f
    @helloworld-x4f Месяц назад +1

    可以分享源代码吗

    • @changlunglung
      @changlunglung  Месяц назад +1

      我直接貼在影片的下方的說明了,你往下拉一下就會看到了。

    • @helloworld-x4f
      @helloworld-x4f Месяц назад +1

      @@changlunglung 好的 谢谢

  • @xueyuandu
    @xueyuandu 4 месяца назад

    大佬!我看您微调数据和本地知识库的数据都一样。我在什么情况下微调,什么情况下导入本地知识库就可以了呀?

  • @zmeta8
    @zmeta8 5 месяцев назад +1

    有没有方法可以让chromadb同时支援bm25 rank

    • @wei-shunbao9490
      @wei-shunbao9490 5 месяцев назад +1

      可以考虑用elasticsearch,embedding和bm25都支持

  • @xueyuandu
    @xueyuandu 4 месяца назад +1

    大佬!我看您微调数据和本地知识库的数据都一样。我在什么情况下微调,什么情况下导入本地知识库就可以了呀?

    • @changlunglung
      @changlunglung  4 месяца назад +2

      基本上是因為教學方便,如果你的資源(算力)夠、可以花比較多的時間、加上你的資料(訓練集)能做的很好,當然微調是最好的。因為要微調建議還是至少要用8*7B的模型或者llama8b來試。
      再來如果是中文的,也許如大陸的千問來試試,微調後的模型也是要進行很多的測試,確保問與答都是符合的。
      是非常花時間,又要擔心幻覺,所以我才說,有很多時間,才去玩微調。
      如果資源不太夠,而且資料要求的精準度(幻覺要少),那RAG會是首要的選擇。
      也就是寧可從知識庫給東西,就算給錯,也不容許生成幻覺的場景,那就先用RAG來做。
      微調要花更多的時間,無論是訓練或者更多的是資料的前處理、資料集的準備。
      以上提供你參考,希望有回答到問題,謝謝。

    • @xueyuandu
      @xueyuandu 4 месяца назад

      明白了,非常专业!

  • @xueyuandu
    @xueyuandu 4 месяца назад

    大佬!我看您微调数据和本地知识库的数据都一样。我在什么情况下微调,什么情况下导入本地知识库就可以了呀?

  • @cayoh
    @cayoh 5 месяцев назад +1

    用的breeze哪裡有llama3?

    • @changlunglung
      @changlunglung  5 месяцев назад

      抱歉更正,本影片重點是RAG,主題已修正,謝謝提醒。
      若需要使用llama3來做最後的整理內容,把llama3拉下來,程式碼中的模型換成llama3就行了。

  • @wei-chunlee4338
    @wei-chunlee4338 Месяц назад +1

    Thanks!

  • @tonyliu5659
    @tonyliu5659 3 месяца назад

    感谢您的分享,我有一个问题,您对于大的文档处理时,会有什么好的建议来避免其因为chunk问题而导致的问题吗?或者说我们如何更好的绕过这个难题

  • @marklinreading
    @marklinreading 4 месяца назад +1

    很棒的影片,感谢,关注了~

  • @江啟勝
    @江啟勝 3 месяца назад +2

    請問若要加temperature要加在程式哪裡?就是若在提供的資料找不到合適的,也不讓大語言模型胡扯。

    • @changlunglung
      @changlunglung  3 месяца назад +2

      最快的方式是你有每一次送出時的prompt字串,都固定加額外的指令就行了。像下面的字串
      原來的prompt + 下面的
      "如果內容中沒有與提問相關的資料,就告訴使用者,資料找不到!!!"
      組成字串在送出去。

  • @caihengsheng
    @caihengsheng 5 месяцев назад +1

    非常好!很有用。請問安裝chromadb via pip 未成功,如何解決?是否是環境設定問題?或需要在 conda 上安裝?

    • @changlunglung
      @changlunglung  5 месяцев назад

      有什麼錯誤訊息嗎?
      你可以在conda的command命令列(記得用管理者權),pip安裝。
      而不是在一般的cmd的command裝,試試。

    • @caihengsheng
      @caihengsheng 5 месяцев назад

      @changlunglung 錯誤訊息 : Downloading rsa-4.9-py3-none-any.whl (34 kB)
      Using cached setuptools-69.5.1-py3-none-any.whl (894 kB)
      Downloading pyasn1-0.6.0-py2.py3-none-any.whl (85 kB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 85.3/85.3 kB 600.6 kB/s eta 0:00:00
      Building wheels for collected packages: chroma-hnswlib
      Building wheel for chroma-hnswlib (pyproject.toml) ... canceled
      ERROR: Operation cancelled by user 但我并没作anything?

    • @caihengsheng
      @caihengsheng 5 месяцев назад

      @@changlunglung 錯誤訊息:Using cached humanfriendly-10.0-py2.py3-none-any.whl (86 kB)
      Downloading pyasn1_modules-0.4.0-py3-none-any.whl (181 kB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 181.2/181.2 kB 1.6 MB/s eta 0:00:00
      Downloading rsa-4.9-py3-none-any.whl (34 kB)
      Using cached setuptools-69.5.1-py3-none-any.whl (894 kB)
      Downloading pyasn1-0.6.0-py2.py3-none-any.whl (85 kB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 85.3/85.3 kB 600.6 kB/s eta 0:00:00
      Building wheels for collected packages: chroma-hnswlib
      Building wheel for chroma-hnswlib (pyproject.toml) ... canceled
      ERROR: Operation cancelled by user

    • @changlunglung
      @changlunglung  5 месяцев назад

      哇哇,這個我也沒遇過,是否重開機後再試試。

    • @陳威益-s3o
      @陳威益-s3o 2 месяца назад

      安裝過程中選擇必要的組件:
      在安裝程序中,選擇 “Desktop development with C++” 工作負載。
      確保選中以下選項:
      MSVC v142 - VS 2019 C++ x64/x86 build tools (最新版本)
      Windows 10 SDK

  • @BoGao-zn1vq
    @BoGao-zn1vq Месяц назад +1

    清晰易懂,谢谢!

    • @changlunglung
      @changlunglung  Месяц назад

      感謝您的留言與支持,歡迎轉分享。

    • @BoGao-zn1vq
      @BoGao-zn1vq Месяц назад

      @@changlunglung 程序怎么跑不起来了,总是出现连接错误

    • @BoGao-zn1vq
      @BoGao-zn1vq Месяц назад

      Connection error
      Is Streamlit still running? If you accidentally stopped Streamlit, just restart it in your terminal:

    • @changlunglung
      @changlunglung  4 дня назад

      你參考我下面的影片,用我影片後面的方法打開cmd 去執行程式,而不是在編輯器上面執行
      ruclips.net/video/Uc51N9jvACk/видео.html

  • @claireyang497
    @claireyang497 3 месяца назад

    感謝分享,想請問生成的輸出出現亂碼?這個可以如何解決
    {
    "model":"ycchen/breeze-7b-instruct-v1_0"
    "created_at":"2024-06-25T06:50:36.324415Z"
    "response":"er▅in t ��������������������������������▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅er▅in t �▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅"
    "done":false
    }

    • @changlunglung
      @changlunglung  3 месяца назад

      得到的response是簡體字嗎?
      是否先提問用英文試試,是否會一樣!

    • @claireyang497
      @claireyang497 3 месяца назад +1

      @@changlunglung 改用llama3 就正常了🙂