国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引

這篇具有很好參考價值的文章主要介紹了LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

推薦閱讀列表:

LLM本地知識庫問答系統(tǒng)(一):使用LangChain和LlamaIndex從零構(gòu)建PDF聊天機(jī)器人指南

? ? ? ?上一篇文章我們介紹了使用LlamaIndex構(gòu)建PDF聊天機(jī)器人,本文將介紹一下LlamaIndex的基本概念和原理。

LlamaIndex簡介

? ? ? ?LlamaIndex(也稱為GPT Index)是一個用戶友好的界面,可將外部數(shù)據(jù)連接到大型語言模型(LLM)。它提供了一系列工具來簡化流程,包括可以與各種現(xiàn)有數(shù)據(jù)源和格式(如API、PDF、文檔和SQL)集成的數(shù)據(jù)連接器。此外,LlamaIndex為結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)提供索引,可以輕松地與LLM一起使用。

? ? ? ?本文將討論LlamaIndex提供的不同類型的索引以及如何使用它們。LlamaIndex索引包括列表索引、矢量存儲索引、樹索引和關(guān)鍵字表索引,當(dāng)然也包括一些特殊索引,比如圖索引、Pandas索引、SQL索引和文檔摘要索引。

? ? ? ?有了ChatGPT這么強(qiáng)大的LLM,搭建PDF聊天機(jī)器人不夠嗎?為什么還需要LlamaIndex?其實,如果想搭建企業(yè)級的聊天機(jī)器人,那么ChatGPT的上下文是不夠的,常見LLM上下文大致如下:

  • GPT-3:約2000個tokens
  • GPT-3.5:約4000個tokens
  • GPT-4:最多32.000個tokens

Note:1000個tokens大約有750個words

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

? ? ? ?LlamaIndex將文檔分解為多個Node對象,Node表示源文檔的“塊”,這些源文檔可以是文本塊、圖像或者其他內(nèi)容。它們還包含元數(shù)據(jù)以及與其他節(jié)點和索引結(jié)構(gòu)的關(guān)系信息。創(chuàng)建索引,其實就是創(chuàng)建這些Node,也可以手動為文檔定義Node。

使用LlamaIndex構(gòu)建索引

下面我們看一下如何創(chuàng)建這些索引:

安裝LlamaIndex相關(guān)庫

pip install llama-indexpip install openai

設(shè)置OpenAI API Key

import osos.environ['OPENAI_API_KEY'] = '<YOUR_OPENAI_API_KEY>'?import loggingimport sys?## showing logslogging.basicConfig(stream=sys.stdout, level=logging.INFO)logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))??## load the PDFfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom llama_index import download_loader?# define loaderUnstructuredReader = download_loader('UnstructuredReader', refresh_cache=True)loader = UnstructuredReader()?# load the datadocuments = loader.load_data('../notebooks/documents/Apple-Financial-Report-Q1-2022.pdf',split_documents=False)

列表索引(List Index)

? ? ? ?列表索引是一個簡單的數(shù)據(jù)結(jié)構(gòu),其中Node存儲在一個序列中。文檔文本被分塊,轉(zhuǎn)換為節(jié)點,并在索引構(gòu)建過程中存儲在列表中。如下圖所示:

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

? ? ? ?在查詢期間,如果沒有指定其他查詢參數(shù),LlamaIndex只需將列表中的所有節(jié)點加載到Response Synthesis模塊中。

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

? ? ? ?列表索引提供了多種查詢列表索引方式,比如通過embedding查詢最相關(guān)的top-k塊,或者使用關(guān)鍵字過濾,如下所示:

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

? ? ? ?LlamaIndex為列表索引提供embedding支持。每個節(jié)點存儲文本之外還可以選擇存儲embedding。在查詢期間,我們可以使用embedding對節(jié)點進(jìn)行最大相似度檢索,然后調(diào)用LLM來生成答案。由于使用embedding的相似性查找(例如,使用余弦相似性)不需要LLM調(diào)用,因此embedding是一種代價更低的查詢機(jī)制,而不需要遍歷LLM節(jié)點。這意味著在索引構(gòu)建過程中,LlamaIndex不會調(diào)用LLM來生成embedding,而是在查詢時生成embedding。這種設(shè)計避免了在索引構(gòu)建期間為所有文本塊生成embedding,這對于大數(shù)據(jù)來說可能代價高昂。

下面是一個具體的使用案例:

from llama_index import GPTKeywordTableIndex, SimpleDirectoryReaderfrom IPython.display import Markdown, displayfrom langchain.chat_models import ChatOpenAI?## by default, LlamaIndex uses text-davinci-003 to synthesise response# and text-davinci-002 for embedding, we can change to# gpt-3.5-turbo for Chat modelindex = GPTListIndex.from_documents(documents)?query_engine = index.as_query_engine()response = query_engine.query("What is net operating income?")display(Markdown(f"<b>{response}</b>"))?## Check the logs to see the different between th## if you wish to not build the index during the index construction# then need to add retriever_mode=embedding to query engine# query with embed_model specifiedquery_engine = new_index.as_query_engine(    retriever_mode="embedding",     verbose=True)response = query_engine.query("What is net operating income?")display(Markdown(f"<b>{response}</b>"))

向量存儲索引(Vector Store Index)

向量存儲索引是最常見且使用簡單的,允許在大量數(shù)據(jù)中回答查詢。

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

? ? ? 默認(rèn)情況下,GPTVectorStoreIndex使用內(nèi)存中的SimpleVectorStore。與List Index不同,Vector Store Index在構(gòu)建索引過程中就生成了embedding,這意味著在構(gòu)建索引以生成embedding數(shù)據(jù)期間就調(diào)用了LLM。

? ? ? ?查詢Vector Store Index前k個最相似的節(jié)點,并將它們傳遞到我們的Response Synthesis模塊中。

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

from llama_index import GPTVectorStoreIndex?index = GPTVectorStoreIndex.from_documents(documents)query_engine = index.as_query_engine()response = query_engine.query("What did the author do growing up?")response

樹索引(Tree Index)

? ? ? ?樹索引是一個樹結(jié)構(gòu)索引,其中每個節(jié)點都是子節(jié)點的摘要。在索引構(gòu)建過程中,樹是以自下而上的方式構(gòu)建的,直到我們最終得到一組根節(jié)點。樹索引從一組節(jié)點(成為該樹中的葉節(jié)點)構(gòu)建一個層次樹。

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

? ? ?查詢樹索引涉及從根節(jié)點向下遍歷到葉節(jié)點。默認(rèn)情況下,(child_branch_factor=1),查詢在給定父節(jié)點的情況下選擇一個子節(jié)點。如果child_branch_factor=2,則查詢會在每個級別選擇兩個子節(jié)點。

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

? ? ? ?與Vector Index不同,Tree Index是在查詢時生成embedding,當(dāng)然如果在查詢時指定retriever_mode=“embedding”,那么embedding會延遲生成并被緩存起來。

from llama_index import GPTTreeIndex?new_index = GPTTreeIndex.from_documents(documents)response = query_engine.query("What is net operating income?")display(Markdown(f"<b>{response}</b>"))?## if you want to have more content from the answer, # you can add the parameters child_branch_factor# let's try using branching factor 2query_engine = new_index.as_query_engine(    child_branch_factor=2)response = query_engine.query("What is net operating income?")display(Markdown(f"<b>{response}</b>"))

? ? ? ?要在查詢期間構(gòu)建Tree Index,我們需要向查詢引擎添加retrier_mode和response_mode,并將GPTTreeIndex中的build_Tree參數(shù)設(shè)置為False。

index_light = GPTTreeIndex.from_documents(documents, build_tree=False)query_engine = index_light.as_query_engine(    retriever_mode="all_leaf",    response_mode='tree_summarize',)query_engine.query("What is net operating income?")

關(guān)鍵詞表索引(Keyword Table Index)

? ? ? ?關(guān)鍵字表索引從每個節(jié)點提取關(guān)鍵字,并構(gòu)建從每個關(guān)鍵字到該關(guān)鍵字的相應(yīng)節(jié)點的映射。

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

? ? ? ?在查詢期間,我們從查詢中提取相關(guān)關(guān)鍵字,并將這些關(guān)鍵字與預(yù)先提取的Node關(guān)鍵字進(jìn)行匹配,以獲取相應(yīng)的Node。提取的節(jié)點被傳遞到我們的Response Synthesis模塊。

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

? ? ? ? 對于GPTKeywordTableIndex,一般情況是使用LLM從每個文檔中提取關(guān)鍵字,這意味著它在構(gòu)建時確實需要LLM調(diào)用。但是,如果使用GPTSimpleKeywordTableIndex(使用正則表達(dá)式關(guān)鍵字提取器從每個文檔中提取關(guān)鍵字),則在構(gòu)建時不會調(diào)用LLM。

from llama_index import GPTKeywordTableIndexindex = GPTKeywordTableIndex.from_documents(documents)query_engine = index.as_query_engine()response = query_engine.query("What is net operating income?")

可組合性圖索引(Composability Graph Index)

? ? ? ?LlamaIndex通過在現(xiàn)有Index的基礎(chǔ)上composite indices,此功能能夠高效地索引完整的文檔層次結(jié)構(gòu),并為GPT提供量身定制的知識。通過利用可組合性,您可以在多個級別定義索引,例如單個文檔的較低級別索引和文檔組的較高級別索引??紤]以下示例:

  • 可以為每個文檔中的文本創(chuàng)建一個樹索引。
  • 生成一個列表索引,該索引覆蓋整個文檔集合的所有樹索引。

下面通過一個實例來說明一下可組合性圖索引的能力:

  1. 從多個文檔創(chuàng)建樹索引

  2. 從樹索引生成摘要。如前所述,樹索引對于匯總文檔集合非常有用。

  3. 接下來,我們將創(chuàng)建一個Graph,它在3個樹索引之上有一個列表索引。為什么?因為列表索引適合于合成組合多個數(shù)據(jù)源上的信息的答案。

  4. 最后查詢圖形。

? ? ? 我們加載了蘋果從Q1–2022和Q1–2023 兩個季度10k的金融數(shù)據(jù),并進(jìn)行問答,代碼如下:

## reyears = ['Q1-2023', 'Q2-2023']UnstructuredReader = download_loader('UnstructuredReader', refresh_cache=True)?loader = UnstructuredReader()doc_set = {}all_docs = []?for year in years:    year_docs = loader.load_data(f'../notebooks/documents/Apple-Financial-Report-{year}.pdf', split_documents=False)    for d in year_docs:        d.extra_info = {"quarter": year.split("-")[0],                         "year": year.split("-")[1],                        "q":year.split("-")[0]}    doc_set[year] = year_docs    all_docs.extend(year_docs)

為每個季度數(shù)據(jù)創(chuàng)建索引

## setting up vector indicies for each year#---# initialize simple vector indices + global vector index# this will use OpenAI embedding as default with text-davinci-002service_context = ServiceContext.from_defaults(chunk_size_limit=512)index_set = {}for year in years:    storage_context = StorageContext.from_defaults()    cur_index = GPTVectorStoreIndex.from_documents(        documents=doc_set[year],        service_context=service_context,        storage_context=storage_context    )    index_set[year] = cur_index    # store index in the local env, so you don't need to do it over again    storage_context.persist(f'./storage_index/apple-10k/{year}')

從樹索引生成摘要。如前所述,樹索引對于匯總文檔集合非常有用。

# describe summary for each index to help traversal of composed graphindex_summary = [index_set[year].as_query_engine().query("Summary this document in 100 words").response for year in years]

接下來,我們將在3個樹索引之上創(chuàng)建一個包括列表索引Graph。

### Composing a Graph to Synthesize Answersfrom llama_index.indices.composability import ComposableGraph?from langchain.chat_models import ChatOpenAIfrom llama_index import LLMPredictor?# define an LLMPredictor set number of output tokensllm_predictor = LLMPredictor(llm=ChatOpenAI(temperature=0, max_tokens=512, model_name='gpt-3.5-turbo'))service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor)storage_context = StorageContext.from_defaults()\?## define a list index over the vector indicies ## allow us to synthesize information across  each indexgraph = ComposableGraph.from_indices(    GPTListIndex,    [index_set[y] for y in years],    index_summaries=index_summary,    service_context=service_context,    storage_context=storage_context)?root_id = graph.root_id?#save to diskstorage_context.persist(f'./storage_index/apple-10k/root')?## querying graphcustom_query_engines = {    index_set[year].index_id: index_set[year].as_query_engine() for year in years}?query_engine = graph.as_query_engine(    custom_query_engines=custom_query_engines)?response = query_engine.query("Outline the financial statement of Q2 2023")response.response

Pandas Index and SQL Index

這個相對比較好理解一些,我們直接展示一下實例代碼:

Pandas Index:

from llama_index.indices.struct_store import GPTPandasIndeximport pandas as pd?df = pd.read_csv("titanic_train.csv")?index = GPTPandasIndex(df=df)?query_engine = index.as_query_engine(    verbose=True)response = query_engine.query(    "What is the correlation between survival and age?",)response

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

SQL Index:

? ? ? ?可以使用LLM去訪問傳統(tǒng)數(shù)據(jù)庫了,對于傳統(tǒng)行業(yè)是不有些激動呢?下面展示一個例子,更多例子可以參考(https://gpt-index.readthedocs.io/en/latest/examples/index_structs/struct_indices/SQLIndexDemo.html)

# install wikipedia python package!pip install wikipedia?from llama_index import SimpleDirectoryReader, WikipediaReaderfrom sqlalchemy import create_engine, MetaData, Table, Column, String, Integer, select, column?wiki_docs = WikipediaReader().load_data(pages=['Toronto', 'Berlin', 'Tokyo'])?engine = create_engine("sqlite:///:memory:")metadata_obj = MetaData()?# create city SQL tabletable_name = "city_stats"city_stats_table = Table(    table_name,    metadata_obj,    Column("city_name", String(16), primary_key=True),    Column("population", Integer),    Column("country", String(16), nullable=False),)metadata_obj.create_all(engine)?from llama_index import GPTSQLStructStoreIndex, SQLDatabase, ServiceContextfrom langchain import OpenAIfrom llama_index import LLMPredictor?llm_predictor = LLMPredictor(llm=LLMPredictor(llm=ChatOpenAI(temperature=0, max_tokens=512, model_name='gpt-3.5-turbo')))service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor)?sql_database = SQLDatabase(engine, include_tables=["city_stats"])sql_database.table_info?# NOTE: the table_name specified here is the table that you# want to extract into from unstructured documents.index = GPTSQLStructStoreIndex.from_documents(    wiki_docs,     sql_database=sql_database,     table_name="city_stats",    service_context=service_context)?# view current table to verify the answer laterstmt = select(    city_stats_table.c["city_name", "population", "country"]).select_from(city_stats_table)?with engine.connect() as connection:    results = connection.execute(stmt).fetchall()    print(results)?query_engine = index.as_query_engine(    query_mode="nl")response = query_engine.query("Which city has the highest population?")

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

文檔摘要索引(Document Summary Index)

? ? ? ?Document Summary Index是LlamaIndex全新的數(shù)據(jù)結(jié)構(gòu),非常適合QA系統(tǒng)開發(fā)的。到目前為止,我們已經(jīng)研究了單個索引,我們可以通過使用單個索引或?qū)⒍鄠€索引組合在一起來構(gòu)建LLM QA應(yīng)用程序。

一般來說,強(qiáng)大的LLM-QA系統(tǒng)通常由以下方式開發(fā):

  1. 獲取源文檔并將其劃分為文本塊;

  2. 然后將文本塊存儲在矢量數(shù)據(jù)庫中;

  3. 在查詢時間期間,通過利用用于嵌入的相似性和/或關(guān)鍵字過濾器來檢索文本塊;

  4. 執(zhí)行Response synthesis;

然而,這種方法有幾個限制,會影響檢索性能。

當(dāng)前方法的缺點:

  1. 文本塊沒有完整的全局上下文,這通常會限制問答過程的有效性。

  2. 需要仔細(xì)調(diào)整top-k/相似性得分閾值,因為太小的值可能導(dǎo)致錯過相關(guān)上下文,而太大的值可能會增加不相關(guān)上下文的成本和延遲。

  3. embedding可能并不總是為問題選擇最合適的上下文,因為這個過程本質(zhì)上是分別確定文本和上下文的。

? ? ? ?為了增強(qiáng)檢索結(jié)果,添加了關(guān)鍵字過濾器。然而,這種方法有其自身的一系列挑戰(zhàn),例如通過手動工作或使用NLP關(guān)鍵字提取/主題標(biāo)記模型來為每個文檔識別適當(dāng)?shù)年P(guān)鍵字,以及從查詢中推斷正確的關(guān)鍵字。

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

? ? ? ?這就是LlamaIndex引入文檔摘要索引的地方,該索引可以為每個文檔提取和索引非結(jié)構(gòu)化文本摘要,從而提高了現(xiàn)有方法之外的檢索性能。這個索引比單個文本塊包含更多的信息,并且比關(guān)鍵字標(biāo)簽具有更多的語義。它還允許靈活的檢索,包括LLM和基于embedding的方法。

? ? ? ?在構(gòu)建期間,該索引加載文檔,并使用LLM從每個文檔中提取摘要。在查詢期間,它根據(jù)摘要檢索要查詢的相關(guān)文檔,方法如下:

  • 基于LLM的檢索:獲取文檔摘要集合,并請求LLM識別相關(guān)文檔+相關(guān)性得分
  • 基于embedding的檢索:利用摘要嵌入相似性來檢索相關(guān)文檔,并對檢索結(jié)果的數(shù)量施加top-k限制。

注意:Document Summary Index的檢索類檢索任何選定文檔的所有節(jié)點,而不是在節(jié)點級別返回相關(guān)塊。

下面來看一個例子:

import nest_asyncionest_asyncio.apply()?from llama_index import (    SimpleDirectoryReader,    LLMPredictor,    ServiceContext,    ResponseSynthesizer)from llama_index.indices.document_summary import GPTDocumentSummaryIndexfrom langchain.chat_models import ChatOpenAI?wiki_titles = ["Toronto", "Seattle", "Chicago", "Boston", "Houston"]?from pathlib import Path?import requestsfor title in wiki_titles:    response = requests.get(        'https://en.wikipedia.org/w/api.php',        params={            'action': 'query',            'format': 'json',            'titles': title,            'prop': 'extracts',            # 'exintro': True,            'explaintext': True,        }    ).json()    page = next(iter(response['query']['pages'].values()))    wiki_text = page['extract']?    data_path = Path('data')    if not data_path.exists():        Path.mkdir(data_path)?    with open(data_path / f"{title}.txt", 'w') as fp:        fp.write(wiki_text)?# Load all wiki documentscity_docs = []for wiki_title in wiki_titles:    docs = SimpleDirectoryReader(input_files=[f"data/{wiki_title}.txt"]).load_data()    docs[0].doc_id = wiki_title    city_docs.extend(docs)?# # LLM Predictor (gpt-3.5-turbo)llm_predictor_chatgpt = LLMPredictor(llm=ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo"))service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor_chatgpt, chunk_size_limit=1024)?# default mode of building the indexresponse_synthesizer = ResponseSynthesizer.from_args(response_mode="tree_summarize", use_async=True)doc_summary_index = GPTDocumentSummaryIndex.from_documents(    city_docs,     service_context=service_context,    response_synthesizer=response_synthesizer)?doc_summary_index.get_document_summary("Boston")

知識圖譜索引(Knowledge Graph Index)

? ? ? ?它通過在一組文檔上提取形式為(主語、謂語、賓語)的知識三元組來構(gòu)建索引,了解知識圖譜的讀者不陌生。

? ? ? ?在查詢期間,它可以只使用知識圖作為上下文進(jìn)行查詢,也可以利用每個實體的底層文本作為上下文。通過利用底層文本,我們可以針對文檔的內(nèi)容提出更復(fù)雜的查詢。

? ? ? ?把一個圖想象成相互連接的邊和頂點。

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

更多例子,可以參考(https://gpt-index.readthedocs.io/en/latest/examples/index_structs/knowledge_graph/KnowledgeGraphDemo.html)

各種Index對比

LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引,ChatGPT,人工智能

?文章來源地址http://www.zghlxwxcb.cn/news/detail-684049.html

到了這里,關(guān)于LLM本地知識庫問答系統(tǒng)(二):如何正確使用LlamaIndex索引的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • AIGC:【LLM(四)】——LangChain+ChatGLM:本地知識庫問答方案

    AIGC:【LLM(四)】——LangChain+ChatGLM:本地知識庫問答方案

    LangChain+ChatGLM項目(https://github.com/chatchat-space/langchain-ChatGLM)實現(xiàn)原理如下圖所示 (與基于文檔的問答 大同小異,過程包括:1 加載文檔 - 2 讀取文檔 - 3/4文檔分割 - 5/6 文本向量化 - 8/9 問句向量化 - 10 在文檔向量中匹配出與問句向量最相似的top k個 - 11/12/13 匹配出的文本作為上下

    2024年02月13日
    瀏覽(90)
  • 從LangChain+LLM的本地知識庫問答到LLM與知識圖譜、數(shù)據(jù)庫的結(jié)合

    從LangChain+LLM的本地知識庫問答到LLM與知識圖譜、數(shù)據(jù)庫的結(jié)合

    過去半年,隨著ChatGPT的火爆,直接帶火了整個LLM這個方向,然LLM畢竟更多是基于過去的經(jīng)驗數(shù)據(jù)預(yù)訓(xùn)練而來,沒法獲取最新的知識,以及各企業(yè)私有的知識 為了獲取最新的知識,ChatGPT plus版集成了bing搜索的功能,有的模型則會調(diào)用一個定位于 “鏈接各種AI模型、工具”的

    2024年02月12日
    瀏覽(53)
  • 從零實現(xiàn)Transformer、ChatGLM-6B、LangChain+LLM的本地知識庫問答

    從零實現(xiàn)Transformer、ChatGLM-6B、LangChain+LLM的本地知識庫問答

    最近一直在做類ChatGPT項目的部署 微調(diào),關(guān)注比較多的是兩個:一個LLaMA,一個ChatGLM,會發(fā)現(xiàn)有不少模型是基于這兩個模型去做微調(diào)的,說到微調(diào),那具體怎么微調(diào)呢,因此又詳細(xì)了解了一下微調(diào)代碼,發(fā)現(xiàn)微調(diào)LLM時一般都會用到Hugging face實現(xiàn)的Transformers庫的Trainer類 從而發(fā)現(xiàn)

    2024年02月08日
    瀏覽(43)
  • 開源大模型ChatGLM2-6B 2. 跟著LangChain參考文檔搭建LLM+知識庫問答系統(tǒng)

    開源大模型ChatGLM2-6B 2. 跟著LangChain參考文檔搭建LLM+知識庫問答系統(tǒng)

    租用了1臺GPU服務(wù)器,系統(tǒng) ubuntu20,Tesla V100-16GB (GPU服務(wù)器已經(jīng)關(guān)機(jī)結(jié)束租賃了) SSH地址:* 端口:17520 SSH賬戶:root 密碼:Jaere7pa 內(nèi)網(wǎng): 3389 , 外網(wǎng):17518 VNC地址:* 端口:17519 VNC用戶名:root 密碼:Jaere7pa 硬件需求,ChatGLM-6B和ChatGLM2-6B相當(dāng)。 量化等級?? ?最低 GPU 顯存 F

    2024年02月03日
    瀏覽(32)
  • 【chatglm3】(4):如何設(shè)計一個知識庫問答系統(tǒng),參考智譜AI的知識庫系統(tǒng),

    【chatglm3】(4):如何設(shè)計一個知識庫問答系統(tǒng),參考智譜AI的知識庫系統(tǒng),

    https://www.bilibili.com/video/BV16j411E7FX/?vd_source=4b290247452adda4e56d84b659b0c8a2 【chatglm3】(4):如何設(shè)計一個知識庫問答系統(tǒng),參考智譜AI的知識庫系統(tǒng),學(xué)習(xí)設(shè)計理念,開源組件 https://open.bigmodel.cn/knowledge 知識配置: 項目地址是: https://github.com/chatchat-space/Langchain-Chatchat gitee搬運的項

    2024年02月05日
    瀏覽(34)
  • ai聊天問答知識庫機(jī)器人源碼,基于gpt實現(xiàn)的本地知識庫問答實現(xiàn),聊天對話效果,發(fā)送回復(fù)以及流式輸出...

    ai聊天問答知識庫機(jī)器人源碼,基于gpt實現(xiàn)的本地知識庫問答實現(xiàn),聊天對話效果,發(fā)送回復(fù)以及流式輸出...

    現(xiàn)在基于gpt做自己項目的問答機(jī)器人,效果非常的好。可以把自己的文檔上傳上去,讓機(jī)器人根據(jù)文檔來進(jìn)行回答。 想要實現(xiàn)智能AI問答功能,現(xiàn)在大部分都是基于向量數(shù)據(jù)庫的形式。 整體的流程就是:上傳文檔===openai向量接口 ==== 存入向量數(shù)據(jù)庫 訪客咨詢:? 咨詢問題

    2024年02月10日
    瀏覽(37)
  • LangChain入門(四)-構(gòu)建本地知識庫問答機(jī)器人

    LangChain入門(四)-構(gòu)建本地知識庫問答機(jī)器人

    在這個例子中,我們會介紹如何從我們本地讀取多個文檔構(gòu)建知識庫,并且使用 Openai API 在知識庫中進(jìn)行搜索并給出答案。 目錄 一、安裝向量數(shù)據(jù)庫chromadb和tiktoken 二、使用案例 三、embeddings持久化 四、在線的向量數(shù)據(jù)庫Pinecone 一、安裝向量數(shù)據(jù)庫chromadb和tiktoken ?? 其中h

    2024年02月05日
    瀏覽(102)
  • 用好Python自然語言工具包-- 實例“基于本地知識庫的自動問答”

    用好Python自然語言工具包-- 實例“基于本地知識庫的自動問答”

    首先鳴謝thomas-yanxin 本問中示例來自他在GitHub上的開源項目“基于本地知識庫的自動問答”,鏈接如下: thomas-yanxin/LangChain-ChatGLM-Webui: 基于LangChain和ChatGLM-6B的針對本地知識庫的自動問答 (github.com) 目錄 1. 基礎(chǔ)知識: 2. NLTK庫的使用 3. 實例代碼分析 設(shè)備的定義 函數(shù)定義:從網(wǎng)

    2024年02月05日
    瀏覽(28)
  • (一)AI本地知識庫問答(可運行):LangChain+Chroma向量數(shù)據(jù)庫+OpenAi大模型

    (一)AI本地知識庫問答(可運行):LangChain+Chroma向量數(shù)據(jù)庫+OpenAi大模型

    只需要看config目錄下的config.py,data目錄下的txt知識庫文件,db向量數(shù)據(jù)庫文件在持久化部署后會自動生成,route下的app.py,scripts目錄下的Chroma向量庫持久化部署.py這幾個就可以,scripts目錄下的考勤問答.py和test目錄下都是單獨的自己測試的小代碼,可以不用關(guān)注 因為運行需要

    2024年02月03日
    瀏覽(29)
  • AI知識庫進(jìn)階!三種數(shù)據(jù)處理方法!提高正確率!本地大模型+fastgpt知識庫手把手搭建!22/45

    AI知識庫進(jìn)階!三種數(shù)據(jù)處理方法!提高正確率!本地大模型+fastgpt知識庫手把手搭建!22/45

    hi~ 在上一篇,我們成功搭建了本地知識庫+大模型的完全體! 在知識星球收到很多朋友的打卡,有各種報錯差點崩潰的,也有看到部署成功,開心得跳起來的! 除了自用,還有星球朋友學(xué)會搭建,成功接到商單(聽說單子還不?。?! 不管怎樣,酸甜苦辣,總算把它部署了下

    2024年03月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包