最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang cobra使用chatgpt qdrant實(shí)現(xiàn)ai知識(shí)庫(kù)

 更新時(shí)間:2023年09月24日 10:11:27   作者:莫大  
這篇文章主要為大家介紹了golang cobra使用chatgpt qdrant實(shí)現(xiàn)ai知識(shí)庫(kù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

  • 將數(shù)據(jù)集 通過(guò) openai embedding 得到向量+組裝payload,存入 qdrant
  • 用戶進(jìn)行問(wèn)題搜索,通過(guò) openai embedding 得到向量,從 qdrant 中搜索相似度大于0.8的數(shù)據(jù)
  • 從 qdrant 中取出數(shù)據(jù)得到參考答案

將問(wèn)題標(biāo)題+參考答案,組裝成promot 向gpt進(jìn)行提問(wèn),得到偏向于 已有知識(shí)庫(kù)設(shè)定的擴(kuò)展知識(shí)回答

kbai 知識(shí)庫(kù)的導(dǎo)入和搜索

倉(cāng)庫(kù)地址:https://github.com/webws/embedding-knowledge-base

kabi 是使用 golang 基于 openai chatgpt embedding + qdrant 實(shí)現(xiàn)知識(shí)庫(kù)的導(dǎo)入和問(wèn)答

? kabi -h
a local knowledge base, based on chatgpt and qdrant
usage:
  kbai [flags]
  kbai [command]
available commands:
  completion  generate the autocompletion script for the specified shell
  help        help about any command
  import      import data to vector database
  search      ask the knowledge base example: kbai ask --msg 'first, the chicken or the egg'
flags:
      --apikey string       openai apikey:default from env apikey
      --collection string   qdrant collection name default: kubernetes (default "kubernetes")
  -h, --help                help for kbai
      --proxy string        http client proxy default:socks5://127.0.0.1:1080  (default "socks5://127.0.0.1:1080")
      --qdrant string       qdrant address default: 127.0.0.1:6334 (default "127.0.0.1:6334")
      --vectorsize uint     qdrant vector size default: 1536 (default 1536)
use "kbai [command] --help" for more information about a command.

啟動(dòng)向量數(shù)據(jù)庫(kù)

qdrant 是一個(gè)開(kāi)源的向量搜索引擎,支持多種向量距離計(jì)算方式

docker 運(yùn)行 qdrant

docker run --rm -p 6334:6334 qdrant/qdrant

kbai庫(kù)導(dǎo)入數(shù)據(jù)到知識(shí)庫(kù)

clone 源碼運(yùn)行(后續(xù)提供二進(jìn)制文件)

git clone https://github.com/webws/embedding-knowledge-base.git
cd ./embedding-knowledge-base

這里使用的測(cè)試數(shù)據(jù)是k8s相關(guān)的知識(shí)庫(kù),真實(shí)數(shù)據(jù)需自己準(zhǔn)備

1.設(shè)置 openai apikey

export apikey=xxx

2.導(dǎo)入知識(shí)庫(kù)(源碼運(yùn)行)

go run ./ import --datafile ./example/data.json

data.json 數(shù)據(jù)格式如下,為 真實(shí)數(shù)據(jù)需自己準(zhǔn)備

[
    {
        "questions": "這是問(wèn)題",
        "answers": "這是答案"
    },
]

說(shuō)明:

默認(rèn)的 代理 是 "socks5://127.0.0.1:1080" 自定義 可使用 --proxy 指定

kbai 搜索數(shù)據(jù)

搜索問(wèn)題(源碼執(zhí)行)

go run ./ search --msg "網(wǎng)關(guān)是什么"

回答

the answer to the knowledge base:
在kubernetes中,網(wǎng)關(guān)通常指的是ingress(入 口)資源對(duì)象。ingress是一種kubernetes api對(duì)象,用于配置和管理集群中的http和https流量入口。它充當(dāng)了從集群外部訪問(wèn)集群內(nèi)部服務(wù)的入口點(diǎn)

results of chatgpt answers  with reference answers:
,同時(shí)提供負(fù)載均衡、ssl/tls終止和基于域名的路由等功能。ingress資源對(duì)象定義了一組規(guī)則,這些規(guī)則指定了通過(guò)特定http路徑或主機(jī)名將請(qǐng)求路由到后端服務(wù)的方式??梢允褂貌煌膇ngress控制器實(shí)現(xiàn)這些規(guī)則,如nginx、traefik等。這樣就可以在集群中創(chuàng)建多個(gè)ingress資源對(duì)象來(lái)管理不同的流量入口。

only chatgpt answers:
網(wǎng)關(guān)是一種網(wǎng)絡(luò)設(shè)備,用于連接兩個(gè)或多個(gè)不同類型的網(wǎng)絡(luò),以便實(shí)現(xiàn)數(shù)據(jù)以不同協(xié)議進(jìn)行傳遞和轉(zhuǎn)換。網(wǎng)關(guān)起到了連接不同網(wǎng)絡(luò)之間的橋梁作用,將兩個(gè)或多個(gè)網(wǎng)絡(luò)互相連接起來(lái),并負(fù)責(zé)數(shù)據(jù)的路由和轉(zhuǎn)發(fā)。網(wǎng)關(guān)可以是硬件設(shè)備,如路由器,也可以是軟件程序,如互聯(lián)網(wǎng)網(wǎng)關(guān)。網(wǎng)關(guān)通常用于連接本地網(wǎng)絡(luò)與互聯(lián)網(wǎng),使得局域網(wǎng)中的計(jì)算機(jī)能夠訪問(wèn)互聯(lián)網(wǎng)上的資源。除了連接不同網(wǎng)絡(luò)的功能,網(wǎng)關(guān)還可以實(shí)現(xiàn)安全性、負(fù)載均衡、數(shù)據(jù)過(guò)濾等功能。

  • 第一個(gè)是知識(shí)庫(kù)的回答(the answer to the knowledge base):
  • 第二個(gè) 是結(jié)合知識(shí)庫(kù) chatgpt 的回答(results of chatgpt answers with reference answers)
  • 第三個(gè) 僅chatgpt 回答

可以看出 直接問(wèn)chatgpt,得到的答案可能跟k8s無(wú)關(guān),結(jié)合k8s本地知識(shí)庫(kù),可以讓回答偏向 數(shù)據(jù)集設(shè)定的主題

如果直接搜索 與知識(shí)庫(kù)無(wú)關(guān)或違規(guī)問(wèn)題,將搜索不到任務(wù)數(shù)據(jù)

go run ./ search --msg "蘋(píng)果不洗能吃嗎"
rearch term violation or exceeding category

kabi golang 實(shí)現(xiàn) ai知識(shí)庫(kù)導(dǎo)入原理

導(dǎo)入

  • 接入 qdrant 和 openai cleint
  • 解釋原始知識(shí)庫(kù)數(shù)據(jù) 為 q(問(wèn)) a(答)
  • 將 問(wèn)題 經(jīng)過(guò) openai embedding 得到向量+答案存入 qdrant

以下是 kbai go 導(dǎo)入邏輯代碼

qdrantclient := qdrant.newqdrantclient(configflags.qdrant, configflags.collection, configflags.vectorsize)
            defer qdrantclient.close()
            aiclient, err := ai.newaiclient(configflags.proxy, configflags.apikey)
            if err != nil {
                return err
            }
            if err = qdrantclient.createcollection(configflags.collection, configflags.vectorsize); err != nil {
                return err
            }
            qas, err := converttoqas(datafile)
            if err != nil {
                return err
            }
            points := []*pb.pointstruct{}
            logger.infow("import", "data", qas)
            qpslenth := len(qas)
            for i, qa := range qas {
                embedding, err := aiclient.simplegetvec(qa.questions)
                if err != nil {
                    logger.errorw("simplegetvec", "err", err, "question", qa.questions, "index", i, "total", qpslenth)
                    return err
                }
                point := buildpoint(qa.questions, qa.answers, embedding)
                points = append(points, point)
            }

搜索

  • 問(wèn)題搜索,通過(guò) openai embedding 得到向量
  • 根據(jù)向量 從 qdrant 中搜索相似度大于0.8的數(shù)據(jù)
  • 根據(jù) qdrant 里的知識(shí)庫(kù)答案(參考答案) + 從 chatgpt 提問(wèn) 得到擴(kuò)展知識(shí)

以下是 kbai go 搜索代碼邏輯

qdrantclient := qdrant.newqdrantclient(configflags.qdrant, configflags.collection, configflags.vectorsize)
            defer qdrantclient.close()
            aiclient, err := ai.newaiclient(configflags.proxy, configflags.apikey)
            if err != nil {
                return err
            }
            vector, err := aiclient.simplegetvec(msg)
            if err != nil {
                return err
            }
            points, err := qdrantclient.search(vector)
            if err != nil {
                logger.errorw("qdrant search fail", "err", err)
                return err
            }
            if len(points) == 0 {
                fmt.println("rearch term violation or exceeding category")
                return nil
                // return errors.new("rearch term violation or exceeding category")
            }
            // score less than 0.8, rearch term violation or exceeding category
            if points[0].score < 0.8 {
                fmt.println("rearch term violation or exceeding category")
                return nil
                // return errors.new("rearch term violation or exceeding category")
            }

以上就是golang cobra使用chatgpt qdrant實(shí)現(xiàn)ai知識(shí)庫(kù)的詳細(xì)內(nèi)容,更多關(guān)于golang cobra ai知識(shí)庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • golang框架中跨服務(wù)的最佳通信協(xié)議和工具

    golang框架中跨服務(wù)的最佳通信協(xié)議和工具

    在 go 框架中實(shí)現(xiàn)跨服務(wù)通信的最佳實(shí)踐包括使用 grpc(適用于低延遲高吞吐量)、http 客戶端(適用于 restful api)和消息隊(duì)列(適用于異步解耦通信),在選擇通信方式時(shí),應(yīng)考慮服務(wù)交互模式、性能要求和部署環(huán)境等因素
    2024-06-06
  • go語(yǔ)言beego框架web開(kāi)發(fā)語(yǔ)法筆記示例

    go語(yǔ)言beego框架web開(kāi)發(fā)語(yǔ)法筆記示例

    這篇文章主要為大家介紹了go語(yǔ)言beego框架web開(kāi)發(fā)語(yǔ)法筆記示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • golang通過(guò)http訪問(wèn)外部網(wǎng)址的操作方法

    golang通過(guò)http訪問(wèn)外部網(wǎng)址的操作方法

    這篇文章主要介紹了golang通過(guò)http訪問(wèn)外部網(wǎng)址的操作方法,分為?get方式訪問(wèn)外部的接口,Post方式請(qǐng)求外部接口,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • golang實(shí)現(xiàn)http server提供文件下載功能

    golang實(shí)現(xiàn)http server提供文件下載功能

    這篇文章主要介紹了golang實(shí)現(xiàn)http server提供文件下載功能,本文給大家簡(jiǎn)單介紹了Golang的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Go標(biāo)準(zhǔn)庫(kù)strconv實(shí)現(xiàn)string類型與其他基本數(shù)據(jù)類型之間轉(zhuǎn)換

    Go標(biāo)準(zhǔn)庫(kù)strconv實(shí)現(xiàn)string類型與其他基本數(shù)據(jù)類型之間轉(zhuǎn)換

    這篇文章主要為大家介紹了Go標(biāo)準(zhǔn)庫(kù)strconv實(shí)現(xiàn)string類型與其他基本數(shù)據(jù)類型之間轉(zhuǎn)換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Go存儲(chǔ)基礎(chǔ)使用direct io方法實(shí)例

    Go存儲(chǔ)基礎(chǔ)使用direct io方法實(shí)例

    這篇文章主要介紹了Go存儲(chǔ)基礎(chǔ)之如何使用direct io方法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • golang強(qiáng)制類型轉(zhuǎn)換和類型斷言

    golang強(qiáng)制類型轉(zhuǎn)換和類型斷言

    這篇文章主要介紹了詳情介紹golang類型轉(zhuǎn)換問(wèn)題,分別由介紹類型斷言和類型轉(zhuǎn)換,這兩者都是不同的概念,下面文章圍繞類型斷言和類型轉(zhuǎn)換的相關(guān)資料展開(kāi)文章的詳細(xì)內(nèi)容,需要的朋友可以參考以下
    2021-12-12
  • Go 依賴注入庫(kù)wire基本使用

    Go 依賴注入庫(kù)wire基本使用

    本文主要介紹了Go 依賴注入庫(kù)wire基本使用,使用Wire工具簡(jiǎn)化依賴初始化的過(guò)程,通過(guò)依賴注入,代碼更加模塊化、可測(cè)試,并減少了各模塊之間的耦合,增強(qiáng)了可維護(hù)性,Wire工具自動(dòng)生成依賴代碼,使開(kāi)發(fā)更加高效
    2026-03-03
  • golang beyla采集trace程序原理源碼解析

    golang beyla采集trace程序原理源碼解析

    beyla支持通過(guò)ebpf,無(wú)侵入的、自動(dòng)采集應(yīng)用程序的trace信息,本文以golang的nethttp為例,講述beyla對(duì)trace的采集的實(shí)現(xiàn)原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2024-02-02
  • Go?Java算法之單詞搜索示例詳解

    Go?Java算法之單詞搜索示例詳解

    這篇文章主要為大家介紹了Go?Java算法之單詞搜索示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08

最新評(píng)論

莱阳市| 阳东县| 泰安市| 读书| 大悟县| 桃园县| 哈巴河县| 建瓯市| 湘阴县| 泰顺县| 苏尼特右旗| 门源| 鄂伦春自治旗| 库伦旗| 宁强县| 平原县| 民勤县| 涟源市| 环江| 郓城县| 陵川县| 修武县| 恭城| 孟村| 郑州市| 临泉县| 茶陵县| 农安县| 龙南县| 明溪县| 珠海市| 钟山县| 阳东县| 东丰县| 高雄县| 阜阳市| 墨竹工卡县| 安阳市| 南木林县| 奉新县| 巴马|