免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

pdfGPT——通過(guò)AI與上傳的PDF文件進(jìn)行聊天

 520jefferson 2023-06-13 發(fā)布于中國(guó)臺(tái)灣

前言

在AI浪潮風(fēng)起云涌的當(dāng)下,AI正在不斷地重塑著每一個(gè)行業(yè)。筆者的目標(biāo)是在公眾號(hào)中把所有當(dāng)下流行的AI應(yīng)用都梳理一遍,在整理技術(shù)拓展思路的同時(shí)也給大家做一個(gè)科普。有一段時(shí)間沒(méi)有介紹aigc相關(guān)的應(yīng)用了,今天翻到了一個(gè)很早之前調(diào)研過(guò)的火了很久的一個(gè)項(xiàng)目—pdfGPT。

PDF GPT允許你使用GPT功能與上傳的PDF文件進(jìn)行聊天。這時(shí)候看過(guò)筆者推文的同學(xué)就會(huì)問(wèn),這個(gè)項(xiàng)目和Quivr有什么區(qū)別呢?實(shí)際上,這個(gè)項(xiàng)目比Quivr要早,只是Quivr適配了更多的數(shù)據(jù)類型,比如文本、圖片、代碼片段,應(yīng)有盡有。對(duì)Quivr感興趣的可以翻一下之前的文章:Quivr - 你的第二個(gè)大腦,由AIGC賦能

本篇文章的目的更多是為了整理和科普,后面筆者會(huì)輸出一些AI實(shí)戰(zhàn)應(yīng)用的文章,小伙伴們可以持續(xù)關(guān)注一下。 本篇的pdfGPT項(xiàng)目的github地址為:https://github.com/bhaskatripathi/pdfGPT

pdfGPT

演示

1.演示URL: https:///41ZXBJM

注意: 如果你喜歡這個(gè)項(xiàng)目,請(qǐng)給它點(diǎn)贊!

問(wèn)題描述 :

1.當(dāng)你向Open AI傳遞大量文本時(shí),它會(huì)受到4K令牌限制。它不能將整個(gè)pdf文件作為輸入2.Open AI有時(shí)會(huì)變得過(guò)于健談,并返回與你的查詢無(wú)直接關(guān)系的無(wú)關(guān)應(yīng)答。這是因?yàn)镺pen AI使用了質(zhì)量較差的嵌入。3.ChatGPT不能直接與外部數(shù)據(jù)進(jìn)行交互。一些解決方案使用Langchain,但如果沒(méi)有正確實(shí)現(xiàn),它會(huì)消耗大量的令牌。4.有許多解決方案,如https://www., https://www./chat-with-any-pdf, https://www.,它們的內(nèi)容質(zhì)量較差,容易產(chǎn)生幻覺(jué)問(wèn)題。避免幻覺(jué)并提高真實(shí)性的一個(gè)好方法是使用改進(jìn)的嵌入。為了解決這個(gè)問(wèn)題,我建議使用Universal Sentence Encoder系列算法來(lái)改進(jìn)嵌入(在這里閱讀更多:https://v/google/collections/universal-sentence-encoder/1)。

解決方案: 什么是PDF GPT ?

1.PDF GPT允許你使用GPT功能與上傳的PDF文件進(jìn)行聊天。2.該應(yīng)用程序智能地將文檔分解成更小的塊,并使用強(qiáng)大的Deep Averaging Network Encoder生成嵌入。3.首先在你的pdf內(nèi)容上進(jìn)行語(yǔ)義搜索,然后將最相關(guān)的嵌入傳遞給Open AI。4.自定義邏輯生成精確的響應(yīng)。返回的響應(yīng)甚至可以在方括號(hào)([])中引用信息所在的頁(yè)碼,增加了響應(yīng)的可信度,幫助快速定位相關(guān)信息。這些響應(yīng)比Open AI的原始響應(yīng)要好得多。5.Andrej Karpathy在這篇文章中提到,對(duì)于類似的問(wèn)題,KNN算法是最合適的:https://twitter.com/karpathy/status/16470252305468866586.使用langchain-serve[1]在生產(chǎn)環(huán)境中啟用API。

Docker

運(yùn)行docker-compose -f docker-compose.yaml up使用Docker compose。

使用langchain-serve[2]在生產(chǎn)環(huán)境中使用pdfGPT

本地游樂(lè)場(chǎng)

1.在一個(gè)終端上運(yùn)行lc-serve deploy local api使用langchain-serve將應(yīng)用程序作為API暴露出來(lái)。2.在另一個(gè)終端上運(yùn)行python app.py進(jìn)行本地gradio游樂(lè)場(chǎng)。3.在你的瀏覽器上打開(kāi)http://localhost:7860并與應(yīng)用程序進(jìn)行交互。

云部署

通過(guò)在Jina Cloud[3]上部署使pdfGPT生產(chǎn)就緒。

lc-serve deploy jcloud api

顯示命令輸出【公眾號(hào)格式問(wèn)題,請(qǐng)移步原文】













使用cURL進(jìn)行交互

(將URL更改為你自己的端點(diǎn))

PDF url

curl -X 'POST' \  'https://langchain-3ff4ab2c9d.wolf./ask_url' \  -H 'accept: application/json' \  -H 'Content-Type: application/json' \  -d '{  "url": "https:///sites/default/files/uploads/downloadcenter/Arogya%20Sanjeevani%20Policy%20CIS_2.pdf",  "question": "What'\''s the cap on room rent?",  "envs": {    "OPENAI_API_KEY": "'"${OPENAI_API_KEY}"'"    }}'
{"result":" Room rent is subject to a maximum of INR 5,000 per day as specified in the Arogya Sanjeevani Policy [Page no. 1].","error":"","stdout":""}

PDF文件

QPARAMS=$(echo -n 'input_data='$(echo -n '{"question": "What'\''s the cap on room rent?", "envs": {"OPENAI_API_KEY": "'"${OPENAI_API_KEY}"'"}}' | jq -s -R -r @uri))curl -X 'POST' \  'https://langchain-3ff4ab2c9d.wolf./ask_file?'"${QPARAMS}" \  -H 'accept: application/json' \  -H 'Content-Type: multipart/form-data' \  -F 'file=@Arogya_Sanjeevani_Policy_CIS_2.pdf;type=application/pdf'
{"result":" Room rent is subject to a maximum of INR 5,000 per day as specified in
Arogya Sanjeevani Policy [Page no. 1].","error":"","stdout":""}

在本地主機(jī)上運(yùn)行

鳴謝 : Adithya S[4]

1.通過(guò)在你的終端或命令提示符中輸入以下命令來(lái)拉取鏡像:

 docker pull registry.hf.space/bhaskartripathi-pdfchatter:latest

1.將Universal Sentence Encoder下載到你的項(xiàng)目的根文件夾。這很重要,因?yàn)榉駝t,每次運(yùn)行時(shí)都會(huì)下載915 MB。2.使用這個(gè)鏈接[5]下載編碼器。3.解壓下載的文件,并將其放在你的項(xiàng)目的根文件夾中,如下所示:

你的項(xiàng)目的根文件夾  └───Universal Sentence Encoder  |   ├───assets  |   └───variables  |   └───saved_model.pb  |  └───app.py

4. 如果你已經(jīng)在本地下載了它,將API文件中第68行的代碼:

self.use = hub.load('https://v/google/universal-sentence-encoder/4')

替換為:

  self.use = hub.load('./Universal Sentence Encoder/')

5. 現(xiàn)在,要運(yùn)行PDF-GPT,輸入以下命令:

docker run -it -p 7860:7860 --platform=linux/amd64 registry.hf.space/bhaskartripathi-pdfchatter:latest python app.py

原始源代碼 (托管在Hugging Face的演示) : https:///spaces/bhaskartripathi/pdfChatter/blob/main/app.py

UML

圖片

圖片

sequenceDiagram    participant User    participant System
User->>System: 輸入API密鑰 User->>System: 上傳PDF/PDF URL User->>System: 提問(wèn) User->>System: 提交行動(dòng)呼吁
System->>System: 空字段驗(yàn)證 System->>System: 將PDF轉(zhuǎn)換為文本 System->>System: 將文本分解為塊(150字長(zhǎng)度) System->>System: 檢查是否存在嵌入文件 System->>System: 如果文件存在,則加載嵌入并將擬合屬性設(shè)置為True System->>System: 如果文件不存在,則生成嵌入,擬合推薦器,將嵌入保存到文件并將擬合屬性設(shè)置為True System->>System: 執(zhí)行語(yǔ)義搜索并返回KNN的前5個(gè)塊 System->>System: 加載Open AI提示 System->>System: 在Open AI提示中嵌入前5個(gè)塊 System->>System: 使用Davinci生成答案
System-->>User: 返回答案

流程圖

圖片

圖片

flowchart TBA[輸入] --> B[URL]A -- 手動(dòng)上傳文件 --> C[解析PDF]B -->
D[解析PDF] -- 預(yù)處理 --> E[動(dòng)態(tài)文本塊]C -- 預(yù)處理 --> E[動(dòng)態(tài)文本塊與引文歷史]E --擬合-->F[使用Deep Averaging Network Encoder在每個(gè)塊上生成文本嵌入]F -- 查詢 --> G[獲取頂部結(jié)果]G -- K-最近鄰 --> K[獲取最近鄰 - 匹配引文引用]K -- 生成提示 --> H[生成答案]H -- 輸出 --> I[輸出]

References

[1] langchain-serve: https://github.com/jina-ai/langchain-serve
[2] langchain-serve: https://github.com/jina-ai/langchain-serve
[3] Jina Cloud: https://cloud./
[4] Adithya S: https://github.com/200901002
[5] 鏈接: https://v/google/universal-sentence-encoder/4?tf-hub-format=compressed

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多