附註:

整合 LangChain、OCI Data Science Notebook、OCI 與 OpenSearch 和 OCI Generative AI,以加速 RAG 和對話搜尋的 LLM 開發

簡介

在本教學課程中,我們將探討 LangChain、Oracle Cloud Infrastructure (OCI) Data Science Notebook、OCI with OpenSearch、OCI Data Science AI Quick Actions (AI Quick Actions) 和 OCI Generative AI 服務如何緊密整合,以簡化大型語言模型 (LLM) 應用程式開發。這些工具可加速工作流程、提高生產力,並加快部署針對特定業務需求量身打造的尖端 AI 解決方案。

在第一個教學課程中:教學課程 1:將 OCI Search 與 OCI Data Science Notebook 中的 OpenSearch 和 LangChain 整合,我們討論了將 LangChain、OCI 與 OpenSearch 和 Hugging Face 整合的轉型影響,示範這些技術如何與 OCI Data Science Notebook 搭配運作,簡化企業企業語意搜尋解決方案的開發和生產。我們詳細說明了使用 OpenSearch 設定 OCI 的端對端組態步驟、設定 OCI 資料科學記事本、在記事本階段作業設定 LangChain,以及部署語意搜尋的完整使用案例。

本教學課程以該基礎為基礎,著重於如何與 LangChain、OCI 與 OpenSearch、AI Quick Actions 及 OCI Generative AI 緊密整合,以加速自訂業務使用案例的 LLM 應用程式開發。我們將特別深入討論對話式搜尋、檢索增強生成 (RAG) 和問題回答的聊天機器人解決方案,展示這些工具如何相輔相成,協助開發人員克服挑戰,並以最少的編碼提供創新、可擴展的應用程式。

注意:您可以在我們的公用範例儲存區域中找到此教學課程的完整程式碼範例: OCI OpenSearch 服務程式碼範例

整合方法的優點

使用 LLM 建置應用程式涉及多個步驟:

每個步驟都需要特殊工具、複雜的管線,以及大量的開發工作。透過將 LangChain 與 OCI 服務整合,開發人員可以全面解決這些挑戰,從而降低複雜性並提高生產力。

目標

必要條件

作業 1:建立 OCI 資料科學專案並設定記事本

OCI 資料科學記事本提供彈性且互動式的平台,可用於開發、測試及部署 AI 應用程式。將筆記本與 OCI 服務整合可建立無縫的開發體驗,減少對外部工具的需求。使用筆記本,您可以:

若要建立 OCI 資料科學專案並設定記事本,請參閱工作 2:在 OCI 資料科學中啟動 Jupyter Notebook

工作 2:安裝 LangChain

LangChain 是開發 LLM 型應用程式的最多功能架構之一。其模組化設計與擴充式磁帶櫃提供了強大的抽象概念:

LangChain 能夠與 OCI Generative AI、OCI 與 OpenSearch 等雲端服務無縫連接,而 OCI Data Science 增強了建立企業級應用程式的實用性。LangChain 的靈活性可讓開發人員快速製作應用程式原型並加以迭代,使其成為 RAG 和對話式搜尋解決方案的理想選擇。其與 OCI 服務的整合可進一步簡化開發流程,讓開發人員能夠專注於提供價值。在第一個教學課程中,我們討論如何在筆記型電腦環境中設定 LangChain,並探討如何使用 LangChain 處理非結構化資料、使用 OpenSearch 將資料擷取至 OCI,以及執行語意搜尋的端對端範例。

在您的記事本中執行下列命令,以設定 LangChain 和其他金鑰庫。

!pip install -U oci oracle_ads langchain langchain-community  langchain-huggingface  opensearch-py pypdf

工作 3:使用 LangChain 預先處理及分區您的資料

使用下列 Python 程式碼。

import os
from langchain.document_loaders import PyPDFLoader, CSVLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
 
# Step 1: Load PDF and CSV Documents
def load_documents():
    # Load PDF Document
    pdf_loader = PyPDFLoader("data/sample_document.pdf")
    pdf_documents = pdf_loader.load()
 
    # Load CSV Document
    csv_loader = CSVLoader(file_path="data/sample_data.csv")
    csv_documents = csv_loader.load()
 
    # Combine both sets of documents
    all_documents = pdf_documents + csv_documents
    return all_documents
 
# Step 2: Split the documents into smaller chunks for better processing
def split_documents(documents):
    text_splitter = RecursiveCharacterTextSplitter(
        chunk_size=1000,
        chunk_overlap=100
    )
    split_docs = text_splitter.split_documents(documents)
    return split_docs
 
 
# Load and process documents
documents = load_documents()
split_docs = split_documents(documents)

作業 4:使用 OCI Generative AI Cohere 設定內嵌模型

OCI Generative AI 服務提供完全託管的平台,以存取最先進的 LLM,例如 Cohere 和 Meta 的 LLaMA-3。它支援下列模型:

AI Quick Actions 和 OCI Generative AI 的主要差異在於 AI Quick Actions 具有更廣泛的模型目錄,並透過模型訓練、評估、微調和生命週期管理提供更多靈活性。OCI Generative AI 的主要優勢在於,您無需擁有託管模型的資訊基礎架構。您可以將一般端點用於任何可用的模型,而且只根據要求數目和記號數目收費。相較之下,使用 AI Quick Actions 時,對 LLM 或任何 AI/ML 工作流程協調和生命週期擁有更多自主性,您只需支付基礎架構成本並擁有無限請求。

此外,OCI Generative AI 服務已準備好使用企業內嵌模型,例如專為企業資料打造的 Cohere Embed V3 模型,其執行效能比其他預先訓練的句子轉換器模型更佳,尤其是針對自訂資料。您只需要呼叫此模型,即可產生資料的內嵌。因此,我們相信結合 OCI Generative AI 和 AI Quick Actions 能夠為您的業務應用程式帶來最佳價值。您可以呼叫已經部署的 OCI Generative AI Cohere 內嵌模型端點來內嵌資料,並使用 AI Quick Actions 來微調、測試、評估及部署模型。

LangChain 與 OCI Generative AI 和 AI Quick Action 緊密整合,讓開發人員能夠直接從 OCI 環境調用模型。開發人員只需最少的組態,即可開始使用預先訓練或微調的模型。

以下範例說明如何使用 LangChain 整合來呼叫 Cohere 內嵌的 V3 模型,並在資料擷取期間使用它內嵌文件。

from langchain_community.embeddings import OCIGenAIEmbeddings

oci_cohere_embedding_model = OCIGenAIEmbeddings(
    model_id="cohere.embed-english-v3.0",
    service_endpoint="https://inference.generativeai.us-chicago-1.oci.oraclecloud.com",
    compartment_id="<>YOUR-COMPARTMENT-OCID",
    auth_type="RESOURCE_PRINCIPAL",
    model_kwargs={"input_type": "SEARCH_DOCUMENT"}
)

作業 5:使用 OpenSearch 與 LangChain 設定 OCI 以啟用 RAG 工作流程

RAG 仰賴快速且準確的擷取系統。OCI 與 OpenSearch 服務提供基礎架構來:

LangChain 的向量儲存區功能與 OCI 與 OpenSearch 整合,以支援 RAG 工作流程。開發人員可以使用 OCI Generative AI 的內嵌功能,透過 OpenSearch 有效地從 OCI 編製資料索引和擷取資料。

使用下列 Python 程式碼。

from langchain.vectorstores import OpenSearchVectorSearch
import oci
 
# setup your script to use Resource principal for authentication
auth_provider = oci.auth.signers.get_resource_principals_signer()
auth = ("username", "password")
AUTH_TYPE="RESOURCE_PRINCIPAL"
opensearch_url="https://amaaaaaallb3......................opensearch.us-ashburn-1.oci.oraclecloud.com:9200"   // replace this whole value your opensearch url. Be sure sure to have the :9200 port in your url
 
# Initialize OpenSearch as the vector database
vector_db = OpenSearchVectorSearch(opensearch_url=opensearch_url,
                            index_name="<YOUR-INDEX-NAME>",
                            embedding_function=oci_cohere_embedding_model,
                            signer=auth_provider,
                            auth_type="RESOURCE_PRINCIPAL",
                            http_auth=auth)

作業 6:擷取您的資料

使用下列 Python 程式碼擷取您的資料。

from langchain.vectorstores import OpenSearchVectorSearch
import oci
from tqdm import tqdm
 
batch_size=100
documents = load_documents() # function defined above feel free to or define a new one to process documents
document_chunks = split_documents(documents) // function defined above feel free to edit
index_name= <YOUR-INDEX-NAME>
 
# Ingest documents in batches
for i in tqdm(range(0, len(document_chunks), batch_size), desc="Ingesting batches"):
    batch = document_chunks[i:i + batch_size]
    vector_db.add_texts(texts=batch,
                     bulk_size=batch_size,
                     embedding=embedding_model,
                     opensearch_url=opensearch_url,
                     index_name= index_name,
                     signer=auth_provider,
                     auth_type=AUTH_TYPE,
                     http_auth=("username", "password"))
 
#refresh index
vector_db.client.indices.refresh(index=index_name)

作業 7:使用 LangChain 設定 RAG 的 LLM

OCI Data Science 中的 AI Quick Actions 消除了部署和管理 LLM 的複雜性。它提供用於下列項目的無程式碼介面:

透過 OCI 資料科學記事本環境,即可輕鬆使用並存取 AI 快速操作。它提供了大量的彈性。例如,您可以使用 OCI Object Storage 或本機筆記本中儲存的資料集來訓練、微調或評估模型。它也是一個非常符合成本效益的解決方案,因為除了基礎運算和儲存成本之外,沒有其他費用。最重要的是,您可以存取 AI 快速操作中可用的已審查模型目錄,只要按幾下滑鼠即可部署。此外,您還可以靈活地微調和評估自訂資料集上的任何模型,而無需編寫任何程式碼。不用提及自備模型構件的選項,只要使用 AI 快速操作進行部署,無須擔心基礎架構複雜性。最後,您可以使用內建的提示介面來測試和評估已部署模型的效能。

OCI 資料科學記事本階段作業內提供 AI 快速操作。若要使用 AI 快速操作,請確定已在租用戶中設定必要的原則。如需詳細資訊,請參閱 AI 快速操作政策

  1. 按一下 AI 快速操作,從您的記事本階段作業啟動 AI 快速操作。

    圖像

  2. 存取 LLM 模型目錄。

    圖像

  3. 按一下部署建立部署

    圖像

  4. 部署模型頁面中,輸入建立模型部署所需的詳細資料。

    圖像

  5. 建立模型之後,您可以檢視及測試部署的模型。

    圖像

  6. 建立已部署模型的評估。

    圖像

執行下列程式碼以使用 LangChain 整合來呼叫已部署的 LLM 模型進行問題回答。在此情況下,我們將使用與 AI Quick Actions 一起部署的 LLM 模型,並呼叫其預測端點如下:

import ads
from langchain_community.llms import OCIModelDeploymentLLM

ads.set_auth("resource_principal")
endpoint = "https://modeldeployment.us-ashburn-1.oci.customer-oci.com/ocid1.datasciencemodeldeployment.oc1.iad.am....................../predict"

oads_llm = OCIModelDeploymentLLM(
    endpoint=endpoint,
    model="odsc-llm",
    model_kwargs={"temperature": 0, "max_tokens": 500, 'top_p': 1.0, 'top_k': 1}
)

#test the invoke method to make sure model is deployed and active
oads_llm.invoke("who was the first president of the united states?")

工作 8:執行對話搜尋和 RAG

使用下列 Python 程式碼執行對話搜尋和 RAG。

# Create a retriever from the OpenSearch vector database
retriever = vector_db.as_retriever()

# Load a QA chain that combines the documents and generates an answer
combine_documents_chain = load_qa_chain(oads_llm, chain_type="stuff")

# Create the RetrievalQA chain
qa_chain = RetrievalQA(combine_documents_chain=combine_documents_chain, retriever=retriever)

# Example query
query="What was Notre Dame's first college? be explicit"
response = qa_chain.run(query)
print("Answer:", response)

此 RAG 應用程式的整個端對端程式碼可以在這裡找到: OCI OpenSearch 服務範例筆記型電腦。此教學課程的整個 GitHub 儲存區域可在此處找到: opensearch-integration-with-langchain

接下來的步驟

LangChain、OCI 與 OpenSearch、AI 快速操作、OCI Generative AI 和筆記本的整合,為建置 LLM 應用程式提供了全面的解決方案。無論您是要開發 RAG 系統還是對話式搜尋工具,這些技術都能共同運作,提供強大、可擴展且高效率的解決方案。

藉由採用這種整合式方法,開發人員可以充分發揮生成式 AI 的潛力,並提供推動業務成功的轉型應用程式。立即開始探索這些工具,並邁出建立 AI 應用程式未來的第一步。

認可

其他學習資源

探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center