日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用Hologres和大模型免費(fèi)定制專屬聊天機(jī)器人

更新時(shí)間:

本文為您介紹如何基于Hologres向量計(jì)算能力,無(wú)需進(jìn)行模型訓(xùn)練,即可免費(fèi)、快速定制專屬聊天機(jī)器人。

背景信息

大模型可以廣泛應(yīng)用于各行各業(yè)。使用大模型定制聊天機(jī)器人,除了訓(xùn)練大模型的方式外,還可以使用提示詞微調(diào)(Prompt-tuning)的方法,在提問(wèn)時(shí)提供特定行業(yè)的相關(guān)語(yǔ)料,結(jié)合大模型的閱讀理解和信息整合能力,對(duì)該垂直行業(yè)的問(wèn)題提供更貼切的回答。

Hologres是一站式實(shí)時(shí)數(shù)倉(cāng)引擎,與達(dá)摩院自研高性能向量計(jì)算軟件庫(kù)Proxima深度整合,支持高效、易用的向量計(jì)算能力,詳情請(qǐng)參見(jiàn)Proxima向量計(jì)算

可以將Hologres作為向量實(shí)時(shí)存儲(chǔ)和檢索引擎,把定制語(yǔ)料作為向量存儲(chǔ)并輸出給大模型,最終實(shí)現(xiàn)定制聊天機(jī)器人的快速搭建。

前提條件

  • 已有大模型:本文適用于各種大模型。

  • 已開(kāi)通Hologres實(shí)例:您可以使用Hologres免費(fèi)試用實(shí)例,0元搭建向量數(shù)據(jù)庫(kù),詳情請(qǐng)參見(jiàn)新用戶免費(fèi)試用

    說(shuō)明

    建議使用Hologres 8CU規(guī)格,免費(fèi)試用實(shí)例處理的向量數(shù)據(jù)規(guī)模為百萬(wàn)級(jí)。如有更大規(guī)模向量數(shù)據(jù),請(qǐng)使用更大規(guī)格實(shí)例。

  • 已安裝Anaconda,詳情請(qǐng)參見(jiàn)Anaconda

實(shí)踐步驟

  1. 環(huán)境準(zhǔn)備。

    • 使用Anaconda環(huán)境運(yùn)行如下命令安裝相關(guān)依賴:

      conda create --name chatbot python=3.8
      conda activate chatbot
      
      pip install langchain psycopg2-binary torch transformers modelscope bottle
      pip install <大模型相關(guān)依賴>
    • 準(zhǔn)備大模型:本文以支持通過(guò)API訪問(wèn)的大模型為例,您需要準(zhǔn)備大模型API訪問(wèn)密鑰。

    • 單擊代碼與樣例數(shù)據(jù)或運(yùn)行如下命令克隆本文所需代碼與樣例數(shù)據(jù):

      說(shuō)明
      • 如果通過(guò)下載鏈接下載的代碼與樣例數(shù)據(jù),使用前請(qǐng)進(jìn)行解壓。

      • 如果使用如下代碼克隆代碼與樣例數(shù)據(jù),請(qǐng)?jiān)谑褂们跋螺dGit

      git clone https://github.com/aliyun/alibabacloud-hologres-connectors.git
  2. 大模型試用。

    先試用原生大模型,針對(duì)部分Hologres相關(guān)的專業(yè)問(wèn)題進(jìn)行問(wèn)答。

    1. holo-chatbot/chatbot.py代碼的main函數(shù)(107行)中,修改chat_model_name為您想使用的大模型,示例代碼如下:

      說(shuō)明

      您可以使用任意LangChain支持的大模型,詳見(jiàn)LangChain chat models,也可以為其他大模型實(shí)現(xiàn)相應(yīng)的接口后進(jìn)行調(diào)用。

      # 選擇大模型
      from langchain.chat_models import <chat_model_name>
      
      chat_model = <chat_model_name>(<api_key>='xxx', <api_base>='xxx', temperature=0.1)
      bot = Chatbot(chat_model, args.clear, args.no_vector_store)
    2. 使用如下命令進(jìn)入大模型:

      說(shuō)明

      首次使用會(huì)自動(dòng)下載Embedding模型(約400 MB),需要較長(zhǎng)時(shí)間,第二次調(diào)用則不需要此過(guò)程。

      # 切換目錄至代碼所在目錄
      cd alibabacloud-hologres-connectors/holo-chatbot
      # 運(yùn)行如下命令打開(kāi)設(shè)置向?qū)В鱾€(gè)設(shè)置項(xiàng)按回車跳過(guò)即可
      python generate_config.py
      
      # -n --no-vector-store: 不通過(guò)Hologres向量檢索,直接調(diào)用大模型進(jìn)行問(wèn)答
      python chatbot.py -n
    3. 提問(wèn)問(wèn)題及大模型對(duì)應(yīng)回答如下:

      • Human: 什么是Hologres?
        Chatbot: Hologres是一個(gè)分析型云原生數(shù)據(jù)倉(cāng)庫(kù),由阿里云提供。它可以處理PB級(jí)別的數(shù)據(jù),并提供了高性能的查詢和分析能力。Hologres支持SQL和PostgreSQL協(xié)議,并提供了與阿里云生態(tài)系統(tǒng)的深度集成,例如MaxCompute和DataWorks。
      • Human: Hologres中有什么加速jsonb的方法嗎?
        Chatbot:是的,Hologres提供了一種名為“Gin Index”的方法來(lái)加速jsonb類型的查詢。Gin Index是一種基于倒排索引的數(shù)據(jù)結(jié)構(gòu),它可以快速地定位包含特定jsonb鍵值對(duì)的行。在Hologres中,您可以使用CREATE INDEX語(yǔ)句創(chuàng)建Gin Index,例如:
        CREATE INDEX idx_gin ON my_table USING gin(my_jsonb_column);
        這將在my_table表的my_jsonb_column列上創(chuàng)建一個(gè)Gin Index。之后,您可以使用jsonb的查詢操作符(例如->、->>、#>、#>>)來(lái)查詢?cè)摿校⑶也樵儗⑹褂肎in Index進(jìn)行加速
      • Human: Hologres中的列存jsonb是什么?
        Chatbot: Hologres中的列存jsonb是一種數(shù)據(jù)類型,它可以存儲(chǔ)JSON格式的數(shù)據(jù)。JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,常用于Web應(yīng)用程序中。jsonb是一種二進(jìn)制格式的JSON,它可以提供更快的查詢速度和更小的存儲(chǔ)空間。在Hologres中,您可以使用jsonb列來(lái)存儲(chǔ)和查詢JSON數(shù)據(jù)。
  3. Hologres向量數(shù)據(jù)準(zhǔn)備。

    1. 在Hologres中創(chuàng)建數(shù)據(jù)庫(kù),詳情請(qǐng)參見(jiàn)創(chuàng)建數(shù)據(jù)庫(kù)

    2. 完善連接信息。

      運(yùn)行如下命令打開(kāi)設(shè)置向?qū)В⑻顚戇B接信息。后續(xù)您也可以手動(dòng)修改config/config.yaml文件來(lái)更新連接信息。

      python generate_config.py

      連接信息:

      參數(shù)

      說(shuō)明

      HOLO_ENDPOINT

      Hologres實(shí)例的網(wǎng)絡(luò)地址。

      進(jìn)入Hologres管理控制臺(tái)實(shí)例詳情頁(yè)獲取網(wǎng)絡(luò)地址。

      HOLO_PORT

      Hologres實(shí)例的端口。

      進(jìn)入Hologres管理控制臺(tái)實(shí)例詳情頁(yè)獲取端口。

      HOLO_USER

      當(dāng)前阿里云賬號(hào)的AccessKey ID。

      您可以單擊AccessKey 管理,獲取AccessKey ID。

      HOLO_PASSWORD

      當(dāng)前阿里云賬號(hào)的AccessKey Secret。

      您可以單擊AccessKey 管理,獲取AccessKey Secret。

      HOLO_DATABASE

      Hologres實(shí)例的數(shù)據(jù)庫(kù)名稱。

    3. 準(zhǔn)備語(yǔ)料庫(kù)。

      本文以下載的代碼與樣例數(shù)據(jù)中data目錄下的example_data.csv文件為例。

      • 語(yǔ)料庫(kù)文件需要使用CSV格式文件,并包含titlecontent兩列。

      • 本文將Hologres部分用戶文檔作為語(yǔ)料,內(nèi)容示例如下。您也可以按照示例文件格式自定義語(yǔ)料庫(kù)。

        title

        content

        你是誰(shuí)

        我是Holo chatbot,一個(gè)智能問(wèn)答機(jī)器人。我會(huì)盡我所能根據(jù)給定文檔數(shù)據(jù)庫(kù)回答您的問(wèn)題。

        你是如何實(shí)現(xiàn)的、架構(gòu)是怎樣的

        我采用Langchain框架進(jìn)行開(kāi)發(fā),Langchain是一個(gè)簡(jiǎn)單易用的python大語(yǔ)言模型開(kāi)發(fā)框架,其中集成封裝了很多實(shí)用工具。我的后端采用Hologres進(jìn)行向量數(shù)據(jù)存儲(chǔ),可以存儲(chǔ)大量文本以及向量數(shù)據(jù)并進(jìn)行快速向量近似查詢,以取得最相關(guān)的文檔。最后我通過(guò)調(diào)用大模型 API來(lái)實(shí)現(xiàn)問(wèn)答。

        什么是實(shí)時(shí)數(shù)倉(cāng)Hologres

        Hologres是阿里巴巴自主研發(fā)的一站式實(shí)時(shí)數(shù)倉(cāng)引擎(Real-Time Data Warehouse),支持海量數(shù)據(jù)實(shí)時(shí)寫入、實(shí)時(shí)更新、實(shí)時(shí)加工、實(shí)時(shí)分析……

      • 語(yǔ)料數(shù)據(jù)向量化并導(dǎo)入Hologres:

        運(yùn)行如下命令將語(yǔ)料數(shù)據(jù)轉(zhuǎn)化為向量(Text Embedding),并寫入Hologres。

        說(shuō)明

        本文使用達(dá)摩院在魔搭平臺(tái)的CoRom開(kāi)源中文embedding模型,將語(yǔ)料轉(zhuǎn)換為768維的向量數(shù)據(jù),詳情請(qǐng)參見(jiàn)coROM

        python chatbot.py -l

        您可以在Hologres的langchain_embedding表中查詢轉(zhuǎn)化后的向量數(shù)據(jù):

        SELECT * FROM langchain_embedding limit 1;
        
        --返回結(jié)果示例
        id|embedding|metadata|document
        2419815e-1407-11ee-bee5-acde48001122|{0.395261,0.123794,0.761932,0.413286,...}|{"source": "data/example_data.csv", "row": 1}|title: 你是如何實(shí)現(xiàn)的、架構(gòu)是怎樣的 content: 我采用Langchain框架進(jìn)行開(kāi)發(fā),Langchain是一個(gè)簡(jiǎn)單易用的python大語(yǔ)言模型開(kāi)發(fā)框架,其中集成封裝了很多實(shí)用工具。我的后端采用Hologres進(jìn)行向量數(shù)據(jù)存儲(chǔ),可以存儲(chǔ)大量文本以及向量數(shù)據(jù)并進(jìn)行快速向量近似查詢,以取得最相關(guān)文檔。最后我通過(guò)調(diào)用大模型 API來(lái)實(shí)現(xiàn)問(wèn)答。
  4. 大模型和語(yǔ)料庫(kù)效果驗(yàn)證。

    將上文語(yǔ)料庫(kù)對(duì)應(yīng)的向量數(shù)據(jù)輸入給大模型進(jìn)行提示詞微調(diào),運(yùn)行如下命令進(jìn)入大模型再詢問(wèn)其相同的問(wèn)題。

    python chatbot.py
    • 問(wèn)題一:相較于原生大模型,經(jīng)語(yǔ)料庫(kù)優(yōu)化后的回答可以總結(jié)出Hologres更豐富更準(zhǔn)確的優(yōu)勢(shì)。

      Human: 什么是Hologres
      Chatbot: Hologres是阿里巴巴自主研發(fā)的一站式實(shí)時(shí)數(shù)倉(cāng)引擎(Real-Time Data Warehouse),支持海量數(shù)據(jù)實(shí)時(shí)寫入、實(shí)時(shí)更新、實(shí)時(shí)加工、實(shí)時(shí)分析,支持標(biāo)準(zhǔn)SQL(兼容PostgreSQL協(xié)議和語(yǔ)法,支持大部分PostgreSQL函數(shù)),支持PB級(jí)數(shù)據(jù)多維分析(OLAP)與即席分析(Ad Hoc),支持高并發(fā)低延遲的在線數(shù)據(jù)服務(wù)(Serving),支持多種負(fù)載的細(xì)粒度隔離與企業(yè)級(jí)安全能力,與MaxCompute、Flink、DataWorks深度融合,提供企業(yè)級(jí)離在線一體化全棧數(shù)倉(cāng)解決方案。Hologres致力于高性能、高可靠、低成本、可擴(kuò)展的實(shí)時(shí)數(shù)倉(cāng)引擎研發(fā),為用戶提供海量數(shù)據(jù)的實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù)解決方案和亞秒級(jí)交互式查詢服務(wù),廣泛應(yīng)用在實(shí)時(shí)數(shù)據(jù)中臺(tái)建設(shè)、精細(xì)化分析、自助式分析、營(yíng)銷畫像、人群圈選、實(shí)時(shí)風(fēng)控等場(chǎng)景。
    • 問(wèn)題二:優(yōu)化后的大模型已經(jīng)可以理解Hologres加速查詢JSONB類型的核心信息,并將版本信息、原理等內(nèi)容總結(jié)得較為完整。

      Human: Hologres中有什么加速jsonb的方法嗎?
      Chatbot: 是的,Hologres從 V1.3版本開(kāi)始支持對(duì)于JSONB類型開(kāi)啟列式存儲(chǔ)優(yōu)化,能夠降低JSONB數(shù)據(jù)的存儲(chǔ)大小并加速查詢。開(kāi)啟JSONB列式存儲(chǔ)優(yōu)化后,系統(tǒng)會(huì)在底層自動(dòng)將JSONB的列轉(zhuǎn)換為強(qiáng)Schema的列式存儲(chǔ),查詢JSONB中某一個(gè)Value時(shí)就可以直接命中指定列,從而提升查詢性能。同時(shí)因?yàn)镴SONB中的Value是按列式存儲(chǔ)的,在存儲(chǔ)層可以達(dá)到像普通結(jié)構(gòu)化數(shù)據(jù)一樣的存儲(chǔ)和壓縮效率,從而有效降低存儲(chǔ),實(shí)現(xiàn)降本增效。
    • 問(wèn)題三:優(yōu)化后的大模型可以很好地將列存理解為列式存儲(chǔ)優(yōu)化,并完整總結(jié)JSONB列存原理。

      Human: Hologres中的列存jsonb是什么?
      Chatbot: Hologres中的列存JSONB是指將JSONB類型的數(shù)據(jù)按列式存儲(chǔ),即將JSONB中的每個(gè)鍵值對(duì)拆分成單獨(dú)的列進(jìn)行存儲(chǔ),而不是將整個(gè)JSONB對(duì)象作為一個(gè)整體存儲(chǔ)。這種存儲(chǔ)方式可以提高查詢效率,因?yàn)椴樵儠r(shí)只需要命中需要的列,而不需要掃描整個(gè)JSONB對(duì)象。同時(shí),列存JSONB還可以有效地降低存儲(chǔ)空間,因?yàn)橄嗤闹悼梢员恢貜?fù)存儲(chǔ)在不同的行中,從而實(shí)現(xiàn)數(shù)據(jù)的壓縮。Hologres從 V1.3版本開(kāi)始支持對(duì)于JSONB類型開(kāi)啟列式存儲(chǔ)優(yōu)化。

    可見(jiàn)經(jīng)過(guò)優(yōu)化,大模型在Hologres專業(yè)領(lǐng)域的回答已經(jīng)非常準(zhǔn)確。

  5. (可選)聊天機(jī)器人接入釘釘群聊。

    聊天機(jī)器人可以接入釘釘群聊,您也可以仿照dingding_server.py中的方式將Chatbot接入其他服務(wù)。

    1. 打開(kāi)釘群,添加自定義機(jī)器人,詳情請(qǐng)參見(jiàn)自定義機(jī)器人接入

      其中安全設(shè)置選擇加簽并打開(kāi)Outgoing機(jī)制,在其中填入您部署大模型定制聊天機(jī)器人服務(wù)器的IP和任意Token。將Webhook中的access_tokensecret作為環(huán)境變量DINGDING_TOKENDINGDING_SECRET輸入到連接信息(config/config.yaml)中。

    2. 使用如下命令在服務(wù)器上部署HTTP服務(wù)。

      # 該腳本會(huì)在后臺(tái)服務(wù)釘釘機(jī)器人發(fā)來(lái)的http請(qǐng)求,URL為 http://localhost:8889/chat
      python dingding_server.py > log.txt 2>&1 &
    3. 接入釘釘群聊,開(kāi)始聊天。

      您可以在釘釘群聊中@聊天機(jī)器人,開(kāi)始聊天。