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

使用llama?Index幫你訓(xùn)練pdf的示例詳解

 更新時間:2023年03月28日 11:00:58   作者:Ronny說  
這篇文章主要為大家介紹了使用llama?Index?幫你訓(xùn)練pdf,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

llama Index是什么

《零開始帶你入門人工智能系列》第一篇:還用什么chatpdf,讓llama Index 幫你訓(xùn)練pdf

LlamaIndex 是您的外部數(shù)據(jù)和 LLM 之間的一個簡單、靈活的接口。它以易于使用的方式提供了以下工具:

為您現(xiàn)有的數(shù)據(jù)源和數(shù)據(jù)格式(API、PDF、文檔、SQL 等)提供數(shù)據(jù)連接器

為您的非結(jié)構(gòu)化和結(jié)構(gòu)化數(shù)據(jù)提供索引,以便與 LLM 一起使用。這些索引有助于抽象出情境學(xué)習(xí)的常見樣板和痛點:

  • 以易于訪問的格式存儲上下文以便快速插入。
  • 當(dāng)上下文太大時處理提示限制(例如 Davinci 的 4096 個標(biāo)記)。
  • 處理文本拆分。
  • 為用戶提供查詢索引(輸入提示)并獲得知識增強輸出的界面。
  • 為您提供全面的工具集,權(quán)衡成本和性能。

這里只是LlamaIndex應(yīng)用的冰山一角,還可以挖掘更多好玩的功能

下面讓我一步步來教你如何實現(xiàn)

第一步:安裝依賴

requirements.txt
Flask==2.2.3
Flask-Cors==3.0.10
langchain==0.0.115
llama-index==0.4.30
PyPDF2==3.0.1

我們需要部署一個web服務(wù),這里我使用了Flask,你也可以使用fastapi 或者django實現(xiàn)。其次我們使用llama-index作為索引進(jìn)行pdf查詢。

第二步:訓(xùn)練數(shù)據(jù)和構(gòu)建索引的server

index_server.py
import os
import pickle
# 這里可以換成你自己的key,但是最好不要上傳到github上
os.environ['OPENAI_API_KEY'] = ""
from multiprocessing import Lock
from multiprocessing.managers import BaseManager
from llama_index import SimpleDirectoryReader, GPTSimpleVectorIndex, Document
index = None
stored_docs = {}
lock = Lock()
# 保存index的json文件
index_name = "./index.json"
# 保存文檔的pkl文件 用于保存文檔的id和文本,這樣客戶端就可以查詢到文檔的列表了
pkl_name = "stored_documents.pkl"
def initialize_index():
    """初始化index,如果已經(jīng)存在index,就使用已經(jīng)訓(xùn)練好的index,否則就創(chuàng)建一個新的index"""
    global index, stored_docs
    with lock:
        if os.path.exists(index_name):
            """使用已經(jīng)訓(xùn)練好的index"""
            index = GPTSimpleVectorIndex.load_from_disk(index_name)
        else:
            """使用GPTSimpleVectorIndex創(chuàng)建一個新的index 這里是llama_index的一個bug,如果你不傳入一個空的list,就會報錯 """
            index = GPTSimpleVectorIndex([])
            index.save_to_disk(index_name)
        if os.path.exists(pkl_name):
            with open(pkl_name, "rb") as f:
                stored_docs = pickle.load(f)
def query_index(query_text):
    """查詢index 根據(jù)你查詢的文本,返回一個response"""
    global index
    response = index.query(query_text)
    return response
def insert_into_index(doc_file_path, doc_id=None):
    """將文檔插入到index中,插入的文檔可以是一個文件,也可以是一個字符串,
    如果doc_id不為空,就使用doc_id,否則就使用文件名作為doc_id"""
    global index, stored_docs
    document = SimpleDirectoryReader(input_files=[doc_file_path]).load_data()[0]
    if doc_id is not None:
        document.doc_id = doc_id
    # Keep track of stored docs -- llama_index doesn't make this easy
    stored_docs[document.doc_id] = document.text[0:200]  # only take the first 200 chars
    with lock:
        index.insert(document)
        index.save_to_disk(index_name)
        with open(pkl_name, "wb") as f:
            pickle.dump(stored_docs, f)
    return
def get_documents_list():
    """查詢保存的文檔列表,返回一個list"""
    global stored_doc
    documents_list = []
    for doc_id, doc_text in stored_docs.items():
        documents_list.append({"id": doc_id, "text": doc_text})
    return documents_list
if __name__ == "__main__":
    # 初始化index, 如果已經(jīng)存在index,就使用已經(jīng)訓(xùn)練好的index,否則就創(chuàng)建一個新的index
    print("initializing index...")
    initialize_index()
    # 啟動服務(wù)器,監(jiān)聽5602端口
    manager = BaseManager(('127.0.0.1', 5602), b'123456')
    # 注冊使用到的函數(shù),這樣客戶端就可以調(diào)用這些函數(shù)了
    manager.register('query_index', query_index)
    manager.register('insert_into_index', insert_into_index)
    manager.register('get_documents_list', get_documents_list)
    server = manager.get_server()
    print("server started...")
    server.serve_forever()

注意上面的OPENAI_API_KEY需要修改為你自己的,否則執(zhí)行initialize_index函數(shù)會提示報錯

最后,成功啟動

$ python index_server.py
initializing index...
server started...

總結(jié)時刻

教程使用了Flask、llama-index、PyPDF2等庫,通過搭建web服務(wù),使用llama-index作為索引,最后提供一個交互界面進(jìn)行pdf的內(nèi)容查詢。

如果您有相關(guān)的問題需要進(jìn)一步解答,歡迎提問!有需要的趕緊轉(zhuǎn)發(fā)給你的好友吧

今天的內(nèi)容就到這里了,下期我們繼續(xù)完善這個項目,提供一個Flask服務(wù),然后可以支持接口調(diào)用,還會做一個簡單的ui進(jìn)行文檔處理,敬請期待。

以上就是使用llama Index 幫你訓(xùn)練pdf的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于llama Index 訓(xùn)練pdf的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 深入了解Python?Opencv數(shù)據(jù)增強

    深入了解Python?Opencv數(shù)據(jù)增強

    常見的數(shù)據(jù)增強操作有:按比例放大或縮小圖片、旋轉(zhuǎn)、平移、水平翻轉(zhuǎn)、改變圖像通道等。本文將通過Python?OpenCV實現(xiàn)這些操作,需要的可以參考一下
    2022-02-02
  • python三引號如何輸入

    python三引號如何輸入

    在本篇文章里小編給大家整理的是關(guān)于python三引號輸入方法及相關(guān)實例,需要的朋友們可以學(xué)習(xí)下。
    2020-07-07
  • 簡單了解什么是神經(jīng)網(wǎng)絡(luò)

    簡單了解什么是神經(jīng)網(wǎng)絡(luò)

    這篇文章主要介紹了簡單了解什么是神經(jīng)網(wǎng)絡(luò),具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Python數(shù)據(jù)提取-lxml模塊

    Python數(shù)據(jù)提取-lxml模塊

    這篇文章主要介紹了Python數(shù)據(jù)提取-lxml模塊,lxml模塊和xpath語法的關(guān)系,lxml模塊的使用場景、lxml模塊的安裝、谷歌瀏覽器xpath?helper插件的安裝和使用等相關(guān)內(nèi)容介紹,需要的朋友可以參考一下
    2022-01-01
  • python Flask框架之HTTP請求詳解

    python Flask框架之HTTP請求詳解

    Flask是一個使用 Python 編寫的輕量級 Web 應(yīng)用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎則使用 Jinja2 。Flask使用 BSD 授權(quán),本篇我們來了解Flask框架中的HTTP請求
    2022-07-07
  • Python?selenium安裝+Microsoft?Edge驅(qū)動器下載配置流程(最新推薦)

    Python?selenium安裝+Microsoft?Edge驅(qū)動器下載配置流程(最新推薦)

    本文介紹了如何在Python自動化Web瀏覽器背景下配置MicrosoftEdge瀏覽器驅(qū)動,主要內(nèi)容包括查看瀏覽器版本、下載對應(yīng)驅(qū)動、配置環(huán)境以及安裝和驗證Selenium庫,感興趣的朋友一起看看吧
    2025-02-02
  • Python?Flask-Login構(gòu)建強大的用戶認(rèn)證系統(tǒng)實例探究

    Python?Flask-Login構(gòu)建強大的用戶認(rèn)證系統(tǒng)實例探究

    這篇文章主要為大家介紹了Python?Flask-Login構(gòu)建強大的用戶認(rèn)證系統(tǒng)示例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 給Django Admin添加驗證碼和多次登錄嘗試限制的實現(xiàn)

    給Django Admin添加驗證碼和多次登錄嘗試限制的實現(xiàn)

    這篇文章主要介紹了給Django Admin添加驗證碼和多次登錄嘗試限制的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • PHP魔術(shù)方法__ISSET、__UNSET使用實例

    PHP魔術(shù)方法__ISSET、__UNSET使用實例

    這篇文章主要介紹了PHP魔術(shù)方法__ISSET、__UNSET使用實例,本文直接給出代碼示例,需要的朋友可以參考下
    2014-11-11
  • 一篇文章帶你了解python標(biāo)準(zhǔn)庫--time模塊

    一篇文章帶你了解python標(biāo)準(zhǔn)庫--time模塊

    下面小編就為大家?guī)硪黄猵ython模塊之time模塊。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-08-08

最新評論

柳林县| 北安市| 岳池县| 福鼎市| 新邵县| 武宣县| 揭西县| 项城市| 龙胜| 漳州市| 汉中市| 开封市| 修文县| 广昌县| 平度市| 施甸县| 搜索| 兰西县| 西乌珠穆沁旗| 荔波县| 丰原市| 民和| 汕尾市| 洛阳市| 高安市| 微山县| 漯河市| 奉贤区| 缙云县| 东乡族自治县| 休宁县| 石嘴山市| 瑞金市| 武平县| 东乡| 兰州市| 鄄城县| 克拉玛依市| 冀州市| 江门市| 馆陶县|