Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @ Devfest Taipei 2023

Johnny Sung
December 18, 2023

[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @ Devfest Taipei 2023

大型語言模型(Large language model, LLM)橫空出世,像個萬事通一樣,改變你我的生活,隨時想到的時候諮詢一下,立馬解決你的心中的疑問,甚至有些鮮少人討論的部份,他都有機會可以解決您的問題。 這樣的專家能夠請他來幫助我們知識庫整理嗎?可以的,他擅長幫你整理半結構化的資料,就讓我們看看能夠有什麼有趣的應用吧!

#ai #aigc #bard #chatgpt #langchain #llm
2023.12.16 @ Devfest Taipei 2023

Johnny Sung

December 18, 2023
Tweet

More Decks by Johnny Sung

Other Decks in Technology

Transcript

  1. Full stack developer Johnny Sung (宋岡諺) https://fb.com/j796160836 https://blog.jks.co ff ee/

    https://www.slideshare.net/j796160836 https://github.com/j796160836
  2. 它怎麼幫助你的⽣活? ⽂本撰寫 問題除錯 語⾔學習 Question by Adrien Coquet from Noun

    Project (CC BY 3.0) https://thenounproject.com/icon/question-3884088/ Learning by surotobendol075 from Noun Project (CC BY 3.0) https://thenounproject.com/icon/learning-6383688/ Writing by Chattapat from Noun Project (CC BY 3.0) https://thenounproject.com/icon/writing-3973939/
  3. AI 奉⾏準則 (1/3) 1. Be socially bene fi cial. 對社會有益

    將考慮社會和經濟因素,並將在我們認為整體的收益超過可預⾒的風險和負⾯的情況下繼續進⾏。 2. Avoid creating or reinforcing unfair bias. 避免產⽣或加強不公平的偏⾒ AI算法和數據集可以反映加強或減少不公平的偏⾒,因此因盡量避免對⼈們產⽣不公正的影響。 3. Be built and tested for safety. 在安全的基礎上建立並進⾏測試 開發和應⽤強有⼒的安全措施,以避免產⽣可能的意外。 https://ai.google/responsibility/principles/
  4. AI 奉⾏準則 (2/3) 4. Be accountable to people. 對⼈類負責 我們將設計⼈⼯智能系統為反饋,相關解釋和吸引⼒提供適當的機會。我們的⼈⼯智能技術將受到適當的⼈類

    指導和控制。 5. Incorporate privacy design principles. 結合隱私設計原則 ⿎勵具有隱私保護措施的架構,並提供適當的透明度和對數據使⽤的控制。 6. Uphold high standards of scienti fi c excellence. 堅持⾼標準的科學卓越性 技術創新植根於科學⽅法,致⼒於開放探究,嚴謹,誠信和協作。 https://ai.google/responsibility/principles/
  5. AI 奉⾏準則 (3/3) 7. Be made available for uses that

    accord with these principles. 僅供符合這些原則的⽤途使⽤ 許多技術有多種⽤途,因限制可能有害或濫⽤的應⽤程序。 https://ai.google/responsibility/principles/
  6. 效果展⽰ https://youtu.be/Ix9WIZpArm0?t=128 輸入 特斯拉 2020, 2021, 2022 財報,近 1000 ⾴

    詢問 特斯拉在 2022 年的風險 提供出處在哪⼀個檔案、第幾⾴ 詢問 特斯拉過去三年的營運表現 內容橫跨三個檔案 ⼀次提供三個出處
  7. 你是⼀位專業的研究者。根據下⾯的情境片段來回答最後的問題。 如果你不知道答案,請坦率地說你不知道,不要試圖胡亂編造答案。 如果問題與上下⽂或聊天歷史無關,請禮貌地回應說你只回答與上下⽂相關的問題。 <context> 1 本法⾃公布⽇施⾏。 2 本法中華⺠國八⼗九年六⽉⼆⼗八⽇修正公布之第三⼗條第⼀項及第⼆項,⾃九⼗年⼀ ⽉⼀⽇施⾏;⼀百零四年⼆⽉四⽇修正公布之第⼆⼗八條第⼀項,⾃公布後八個⽉施⾏ ;⼀百零四年六⽉三⽇修正公布之條⽂,⾃⼀百零五年⼀⽉⼀⽇施⾏;⼀百零五年⼗⼆

    ⽉⼆⼗⼀⽇修正公布之第三⼗四條第⼆項施⾏⽇期,由⾏政院定之、第三⼗七條及第三 ⼗八條,⾃⼀百零六年⼀⽉⼀⽇施⾏。 3 本法中華⺠國⼀百零七年⼀⽉⼗⽇修正之條⽂,⾃⼀百零七年三⽉⼀⽇施⾏。 八、其他經中央主管機關指定之事業。 2 依前項第八款指定時,得就事業之部分⼯作場所或⼯作者指定適⽤。 3 本法適⽤於⼀切勞雇關係。但因經營型態、管理制度及⼯作特性等因素適⽤本法確有窒 礙難⾏者,並經中央主管機關指定公告之⾏業或⼯作者,不適⽤之。 4 前項因窒礙難⾏⽽不適⽤本法者,不得逾第⼀項第⼀款⾄第七款以外勞⼯總數五分之⼀ 。 第 4 條 本法所稱主管機關:在中央為勞動部;在直轄市為直轄市政府;在縣(市)為縣(市 度內預估成就第五⼗三條或第五⼗四條第⼀項第⼀款退休條件之勞⼯,依前條計算之退 休⾦數額者,雇主應於次年度三⽉底前⼀次提撥其差額,並送事業單位勞⼯退休準備⾦ 監督委員會審議。 3 第⼀項雇主按⽉提撥之勞⼯退休準備⾦匯集為勞⼯退休基⾦,由中央主管機關設勞⼯退 休基⾦監理委員會管理之;其組織、會議及其他相關事項,由中央主管機關定之。 4 前項基⾦之收⽀、保管及運⽤,由中央主管機關會同財政部委託⾦融機構辦理。最低收 益不得低於當地銀⾏⼆年定期存款利率之收益;如有虧損,由國庫補⾜之。基⾦之收⽀ 、保管及運⽤辦法,由中央主管機關擬訂,報請⾏政院核定之。 5 雇主所提撥勞⼯退休準備⾦,應由勞⼯與雇主共同組織勞⼯退休準備⾦監督委員會監督 之。委員會中勞⼯代表⼈數不得少於三分之⼆;其組織準則,由中央主管機關定之。 6 雇主按⽉提撥之勞⼯退休準備⾦比率之擬訂或調整,應經事業單位勞⼯退休準備⾦監督 委員會審議通過,並報請當地主管機關核定。 7 ⾦融機構辦理核貸業務,需查核該事業單位勞⼯退休準備⾦提撥狀況之必要資料時,得 保密。但有下列情事之⼀者,不在此限: ⼀、同⼀檢舉事項,於依勞資爭議處理法進⾏之調解、仲裁、裁決或依法提起⺠事訴訟 程序,已為被檢舉⼈知悉或可得知悉。 ⼆、經檢舉⼈及檢舉案件之當事⼈,認無保密之必要。 2 受理檢舉機關(構)對於前項所定保密之資訊,應以密件保存,並禁⽌第三⼈閱覽或抄 錄。 第 7 條 受理檢舉機關(構)受理檢舉案件,於辦理檢舉⽂書之分⽂、保管、封發及歸檔等事項 </context> <chat_history> </chat_history> Embedding 輸出內容
  8. 模型的選擇 •Gemini in Google Ai Studio •Gemini in Vertex AI

    •PaLM 2 in Google Ai Studio •PaLM 2 in Vertex AI
  9. PaLM 2 in Vertex AI •從 Google Ai Studio (原

    MakerSuite) 取得 API_KEY •額度內免費 •text-bison@001 不⽀援中⽂ PaLM 2 in Google Ai Studio •直接使⽤ Google Cloud credentials •要輸⼊⼀張信⽤卡 💳 •text-bison@002 可⽀援中⽂ •對應 Langchain 相關 class • GoogleVertexAI • GoogleVertexAIEmbeddings • GoogleVertexAIMultimodalEmbeddings •對應 Langchain 相關 class • GooglePaLM • GooglePaLMEmbeddings
  10. 可調整的參數 • Top K Top K 是⼀種「截斷策略」,它在每⼀步⽣成過程中僅考慮概率最⾼的 K 個詞。例如,如果K設置 為

    50,則模型在預測下⼀個詞時只從概率最⾼的 50 個詞中選擇。這減少了⽣成不相關或離題內容 的風險。 • Top P(⼜稱Nucleus Sampling) Top P 是另⼀種截斷策略,它根據累積概率來選擇詞。在這種⽅法中,選擇⼀組最⼩的詞,這些詞 的累積概率加起來等於 P。例如,如果P設置為 0.9,模型會選擇⼀組詞,這些詞的累計概率達到 90%。這允許更靈活的詞選擇,同時減少⽣成非常罕⾒或不相關詞的可能性。
  11. Vector stores • Chroma • Deep Lake • ElasticSearch •

    ElasticVectorSearch class • ElasticKnnSearch class • FAISS (Facebook AI Similarity Search) • Pinecone • Redis • Supabase (Postgres) • … https://python.langchain.com/en/latest/modules/indexes/vectorstores.html https://miro.medium.com/v2/resize: fi t:1200/1*VSkugYj5NOCQ8xTPaWnv2w.png
  12. $ docker compose up -d version: '3.9' services: server: image:

    ghcr.io/chroma-core/chroma:latest restart: always command: uvicorn chromadb.app:app --reload -- workers 1 --host 0.0.0.0 --port 8000 --log-config chromadb/log_config.yml --timeout-keep-alive 30 volumes: - chroma_persistent_folder:/chroma/chroma/ ports: - 8000:8000 networks: - net volumes: chroma_persistent_folder: driver: local networks: net: driver: bridge ⽤ Docker 啟動 Chroma 超⽅便! https://www.bluestarpackaging.co.uk/single-walled-cardboard-box-85-x-7-x-4---pack-of-25-166-p.asp docker-compose.yml
  13. Google Ai Studio •步驟 Google Ai Studio 取得 API Key

    •https://makersuite.google.com/ •修改 .env 變數
  14. { "error": { "code": 400, "message": "The requested language is

    not supported by models/text-bison-001", "status": "INVALID_ARGUMENT" } } curl \ -H 'Content-Type: application/json' \ -d '{ "prompt": { "text": "雞胸⾁怎麼煮才不柴?"} }' \ "https://generativelanguage.googleapis.com/v1beta3/models/text-bison-001:generateText?key=YOUR_API_KEY" 舊版 text-bison@001 不⽀援中⽂
  15. { "candidates": [ { "content": { "parts": [ { "text":

    "1. **⽤鹽⽔浸泡雞胸⾁**。在烹飪前將雞胸⾁放入鹽⽔中浸泡 30 分鐘,可以幫助雞胸⾁保持 ⽔分和嫩度。\n\n2. **使⽤低溫烹飪**。使⽤低溫烹飪可以防⽌雞胸⾁被煮過頭,⽽讓它保持多汁和嫩滑。可以 使⽤烤箱、慢燉鍋或sous vide來低溫烹飪雞胸⾁。\n\n3. **快速烹飪**。如果你不想使⽤低溫烹飪,那麼快 速烹飪也可以防⽌雞胸⾁被煮過頭。可以使⽤平底鍋、烤盤或烤架來快速烹飪雞胸⾁。\n\n4. **使⽤醬汁或醃料 **。使⽤醬汁或醃料可以幫助雞胸⾁保持⽔分和嫩度。你可以在烹飪前將雞胸⾁放入醬汁或醃料中浸泡,也可以在 烹飪過程中刷上醬汁。\n\n5. **不要煮過頭**。雞胸⾁很容易被煮過頭,所以要注意烹飪的時間。使⽤⾁類溫度 計來檢查雞胸⾁是否煮熟,當雞胸⾁的內部溫度達到 74 攝⽒度時,即可取出。\n\n6. **讓雞胸⾁休息**。在 烹飪完雞胸⾁後,讓它休息 5-10 分鐘,這可以幫助雞胸⾁中的⽔分重新分布,使雞胸⾁更加多汁和嫩滑。" } ], "role": "model" }, "finishReason": "STOP", "index": 0, "safetyRatings": [ { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HATE_SPEECH", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "probability": "NEGLIGIBLE" } ] } ], "promptFeedback": { "safetyRatings": [ { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HATE_SPEECH", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "probability": "NEGLIGIBLE" } ] } } #!/bin/bash API_KEY="YOUR_API_KEY" curl \ -X POST 'https://generativelanguage.googleapis.com/v1beta/models/gemini- pro:generateContent?key='${API_KEY} \ -H 'Content-Type: application/json' \ -d @<(echo '{ "contents": [ { "parts": [ { "text": "雞胸⾁怎麼煮才不柴?" } ] } ], "generationConfig": { "temperature": 0.9, "topK": 1, "topP": 1, "maxOutputTokens": 2048, "stopSequences": [] }, "safetySettings": [ { "category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE" }, { "category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE" }, { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_MEDIUM_AND_ABOVE" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE" } ] }') 要不直接改⽤ Gemini ?
  16. Vertex AI •到 Vertex AI 啟動功能 https://cloud.google.com/vertex-ai?hl=en •安裝 Google Cloud

    CLI https://cloud.google.com/sdk/docs/install-sdk •執⾏登⼊指令取得 Key gcloud auth application-default login •修改 .env 變數
  17. Q&A

  18. 參考資料 • LLM: Google Vertex Ai • https://js.langchain.com/docs/integrations/llms/google_vertex_ai • Embeddings:

    GooglePaLMEmbeddings • https://api.js.langchain.com/classes/experimental_multimodal_embeddings_googlevertexai.GoogleVertexAIMultimodalEmbeddings.html • Embeddings: GoogleVertexAIMultimodalEmbeddings • https://js.langchain.com/docs/modules/data_connection/experimental/multimodal_embeddings/google_vertex_ai • https://api.js.langchain.com/classes/experimental_multimodal_embeddings_googlevertexai.GoogleVertexAIMultimodalEmbeddings.html • LLM: Google PaLM • https://js.langchain.com/docs/integrations/llms/google_palm • Embeddings: GooglePaLMEmbeddings • https://api.js.langchain.com/classes/embeddings_googlepalm.GooglePaLMEmbeddings.html