Hinweis:

Integrieren Sie LangChain, OCI Data Science Notebook, OCI in OpenSearch und OCI Generative AI, um die LLM-Entwicklung für RAG und Konversationssuche zu beschleunigen

Einführung

In diesem Tutorial untersuchen wir, wie sich LangChain, Oracle Cloud Infrastructure (OCI) Data Science Notebook, OCI mit OpenSearch, OCI Data Science AI Quick Actions (AI Quick Actions) und der OCI Generative AI-Service nahtlos integrieren lassen, um die Anwendungsentwicklung großer Sprachmodelle (LLM) zu vereinfachen. Diese Tools beschleunigen Workflows, verbessern die Produktivität und ermöglichen eine schnellere Bereitstellung modernster KI-Lösungen, die auf spezifische Geschäftsanforderungen zugeschnitten sind.

Im ersten Tutorial: Tutorial 1: OCI Search mit OpenSearch und LangChain in OCI Data Science Notebook integrieren haben wir die transformativen Auswirkungen der Integration von LangChain, OCI mit OpenSearch und Hugging Face erläutert und gezeigt, wie diese Technologien mit OCI Data Science Notebook arbeiten können, um die Entwicklung und Produktion von semantischen Suchlösungen für Unternehmen zu vereinfachen. Wir haben die End-to-End-Konfigurationsschritte für die Einrichtung von OCI mit OpenSearch, die Einrichtung von OCI Data Science Notebook, die Konfiguration von LangChain mit Notizbuchsession und die Bereitstellung eines vollständigen Anwendungsfalls für die semantische Suche beschrieben.

Auf dieser Grundlage konzentriert sich dieses Tutorial darauf, wie eine nahtlose Integration über LangChain, OCI mit OpenSearch, KI-Schnellaktionen und OCI Generative AI die LLM-Anwendungsentwicklung für benutzerdefinierte Geschäftsanwendungsfälle beschleunigen kann. Wir werden insbesondere in Lösungen rund um Konversationssuche, Retrieval-Augmented Generation (RAG) und Fragen beantwortende Chatbots eintauchen und zeigen, wie diese Tools zusammen Entwickler befähigen, Herausforderungen zu meistern und innovative, skalierbare Anwendungen mit minimalem Programmieraufwand bereitzustellen.

Hinweis: Die vollständigen Codebeispiele für dieses Tutorial finden Sie in unserem öffentlichen Beispielrepos hier: OCI OpenSearch-Servicecodebeispiele.

Vorteile des integrierten Ansatzes

Die Erstellung von Anwendungen mit LLMs umfasst mehrere Schritte:

Jeder Schritt kann spezielle Tools, komplizierte Pipelines und erheblichen Entwicklungsaufwand erfordern. Durch die Integration von LangChain in OCI-Services können Entwickler diese Herausforderungen ganzheitlich bewältigen, die Komplexität reduzieren und die Produktivität steigern.

Ziele

Voraussetzungen

Aufgabe 1: OCI Data Science-Projekt erstellen und Notizbücher konfigurieren

OCI Data Science Notebook bietet eine flexible und interaktive Plattform für die Entwicklung, das Testen und das Deployment von KI-Anwendungen. Die Integration von Notizbüchern mit OCI-Services schafft eine nahtlose Entwicklungserfahrung, wodurch der Bedarf an externen Tools reduziert wird. Mit Notizbüchern können Sie:

Informationen zum Erstellen eines OCI Data Science-Projekts und zum Konfigurieren eines Notizbuchs finden Sie unter Aufgabe 2: Jupyter Notebook in OCI Data Science starten.

Aufgabe 2: LangChain installieren

LangChain ist eines der vielseitigsten Frameworks für die Entwicklung von LLM-basierten Anwendungen. Der modulare Aufbau und die umfangreiche Bibliothek bieten robuste Abstraktionen für:

LangChains Fähigkeit, nahtlos mit Cloud-Services wie OCI Generative AI, OCI mit OpenSearch und OCI Data Science zu interagieren, verbessert sein Utility für die Erstellung von Unternehmensanwendungen. Dank der Flexibilität von LangChain können Entwickler schnell Prototypen erstellen und Anwendungen iterieren. Dies ist ideal für RAG- und Konversationssuchlösungen. Seine Integrationen mit OCI-Services optimieren den Entwicklungsprozess weiter und ermöglichen es Entwicklern, sich auf die Bereitstellung von Mehrwert zu konzentrieren. Im ersten Tutorial haben wir darüber gesprochen, wie Sie LangChain mit einer Notizbuchumgebung konfigurieren. Außerdem haben wir ein End-to-End-Beispiel für die Verwendung von LangChain zur Verarbeitung unstrukturierter Daten, zur Aufnahme in OCI mit OpenSearch und zur Ausführung einer semantischen Suche erläutert.

Führen Sie den folgenden Befehl in Ihrem Notizbuch aus, um LangChain und andere Schlüssel-Librarys zu konfigurieren.

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

Aufgabe 3: Mit LangChain Daten vorab verarbeiten und Chunking ausführen

Verwenden Sie den folgenden Python-Code.

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)

Aufgabe 4: Einbettungsmodell mit OCI Generative AI Cohere konfigurieren

Der OCI Generative AI-Service bietet eine vollständig verwaltete Plattform für den Zugriff auf hochmoderne LLMs, wie Cohere und Meta's LLaMA-3. Unterstützt werden die folgenden Modelle.

Der Hauptunterschied zwischen AI Quick Actions und OCI Generative AI besteht darin, dass AI Quick Actions über einen umfangreicheren Modellkatalog verfügt und durch Modelltraining, -bewertung, Feinabstimmung und Lebenszyklusmanagement viel mehr Flexibilität bietet. Der Hauptvorteil von OCI Generative AI besteht darin, dass Sie nicht Eigentümer der Infrastruktur sein müssen, die Ihr Modell hostet. Sie können den generischen Endpunkt für eines der verfügbaren Modelle verwenden und werden nur basierend auf der Anzahl der Anforderungen und der Anzahl der Token berechnet. Im Gegensatz dazu zahlen Sie mit KI-Schnellaktionen, während Sie mehr Autonomie über Ihre LLM oder eine KI/ML-Workfloworchestrierung und Ihren Lebenszyklus haben, nur für die Kosten der Infrastruktur und haben unbegrenzte Anforderungen.

Darüber hinaus verfügt der OCI Generative AI-Service über einsatzbereite Einbettungsmodelle für Unternehmen wie das Cohere Embed-Modell V3, das für Unternehmensdaten entwickelt wurde und bekanntermaßen besser abschneidet als andere vortrainierte Satztransformatormodelle, insbesondere für benutzerdefinierte Daten. Sie müssen dieses Modell nur aufrufen, um die Einbettung für Ihre Daten zu generieren. Daher glauben wir, dass die Kombination von OCI Generative AI und KI-Schnellaktionen Ihnen den besten Nutzen für Ihre Geschäftsanwendung bieten kann. Sie können den bereits bereitgestellten OCI Generative AI Cohere-Einbettungsmodellendpunkt aufrufen, um Ihre Daten einzubetten, und KI-Schnellaktionen verwenden, um Ihr Modell zu optimieren, zu testen, zu bewerten und bereitzustellen.

LangChain lässt sich nahtlos in OCI Generative AI und AI Quick Action integrieren, sodass Entwickler Modelle direkt aus ihrer OCI-Umgebung aufrufen können. Mit minimaler Konfiguration können Entwickler vortrainierte oder optimierte Modelle verwenden.

Im Folgenden finden Sie ein Beispiel dafür, wie Sie mit der LangChain-Integration das Cohere-Modell V3 aufrufen und Dokumente während der Datenaufnahme einbetten können.

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"}
)

Aufgabe 5: OCI mit OpenSearch mit LangChain konfigurieren, um RAG-Workflows zu aktivieren

RAG setzt auf schnelle und präzise Abrufsysteme. OCI mit dem Service OpenSearch bietet die Infrastruktur für:

Die Vektorspeicherfunktion von LangChain lässt sich in OCI mit OpenSearch integrieren, um RAG-Workflows zu unterstützen. Entwickler können Einbettungen aus OCI Generative AI verwenden, um Daten effizient mit OpenSearch zu indexieren und aus OCI abzurufen.

Verwenden Sie den folgenden Python-Code.

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)

Aufgabe 6: Daten aufnehmen

Verwenden Sie den folgenden Python-Code zur Aufnahme Ihrer Daten.

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)

Aufgabe 7: LLM für RAG mit LangChain konfigurieren

AI Quick Actions in OCI Data Science eliminiert die Komplexität der Bereitstellung und Verwaltung von LLMs. Es bietet eine No-Code-Schnittstelle für:

AI Quick Actions ist einfach zu verwenden und über die OCI Data Science Notebook-Umgebung zugänglich. Es bietet eine große Menge an Flexibilität. Beispiel: Sie können Datasets verwenden, die in OCI Object Storage oder Ihrem lokalen Notizbuch gespeichert sind, um Ihr Modell zu trainieren, zu optimieren oder zu bewerten. Es ist auch eine sehr kostengünstige Lösung, da über die zugrunde liegenden Rechen- und Speicherkosten hinaus keine zusätzlichen Gebühren anfallen. Am wichtigsten ist, dass Sie mit nur wenigen Klicks auf einen Katalog mit geprüften Modellen zugreifen können, die in AI Quick Actions verfügbar sind. Darüber hinaus haben Sie die Flexibilität, diese Modelle auch auf Ihrem benutzerdefinierten Datensatz zu optimieren und zu bewerten, ohne Code zu schreiben. Ganz zu schweigen von der Option, Ihre eigenen Modellartefakte zu verwenden und einfach mit AI Quick Actions bereitzustellen, ohne sich um die Infrastruktur kümmern zu müssen. Schließlich können Sie mit der integrierten Prompt-Schnittstelle die Performance Ihres bereitgestellten Modells testen und bewerten.

AI Quick Action ist in Ihrer OCI Data Science-Notizbuchsession verfügbar. Um AI-Schnellaktionen zu verwenden, müssen Sie die erforderlichen Policys in Ihrem Mandanten einrichten. Weitere Informationen finden Sie unter KI-Schnellaktions-Policys.

  1. Klicken Sie auf KI-Schnellaktionen, um AI-Schnellaktionen aus Ihrer Notizbuchsession zu starten.

    image

  2. Greifen Sie auf den LLM-Modellkatalog zu.

    image

  3. Klicken Sie auf Deployments und Deployment erstellen.

    image

  4. Geben Sie auf der Seite Modell bereitstellen die erforderlichen Details zum Erstellen eines Modell-Deployments ein.

    image

  5. Nachdem das Modell erstellt wurde, können Sie das bereitgestellte Modell anzeigen und testen.

    image

  6. Bewertung für bereitgestelltes Modell erstellen.

    image

Führen Sie den folgenden Code aus, um mit der Integration LangChain ein bereitgestelltes LLM-Modell zur Beantwortung von Fragen aufzurufen. In diesem Fall verwenden wir das mit AI Quick Actions bereitgestellte LLM-Modell, indem wir seinen Vorhersageendpunkt wie folgt aufrufen:

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?")

Aufgabe 8: Konversationssuche und RAG ausführen

Verwenden Sie den folgenden Python-Code, um die Unterhaltungssuche und RAG auszuführen.

# 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)

Den gesamten End-to-End-Code für diese RAG-Anwendung finden Sie hier: Beispielnotizbuch für OCI OpenSearch Service. Das gesamte GitHub-Repo für dieses Tutorial finden Sie hier: opensearch-integration-with-langchain.

Nächste Schritte

Die Integration von LangChain, OCI mit OpenSearch, AI Quick Actions, OCI Generative AI und Notizbüchern bietet eine umfassende Lösung für die Erstellung von LLM-Anwendungen. Unabhängig davon, ob Sie RAG-Systeme oder Konversationssuchwerkzeuge entwickeln, arbeiten diese Technologien zusammen, um leistungsstarke, skalierbare und effiziente Lösungen bereitzustellen.

Durch die Einführung dieses integrierten Ansatzes können Entwickler das volle Potenzial generativer KI erschließen und transformative Anwendungen bereitstellen, die den Geschäftserfolg fördern. Beginnen Sie noch heute mit der Erkundung dieser Tools, und gehen Sie den ersten Schritt zur Entwicklung der Zukunft von KI-gestützten Anwendungen.

Danksagungen

Weitere Lernressourcen

Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.