Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Integre LangChain, OCI Data Science Notebook, OCI com OpenSearch e OCI Generative AI para Acelerar o Desenvolvimento de LLM para RAG e Pesquisa Conversacional
Introdução
Neste tutorial, exploraremos como o LangChain, o Oracle Cloud Infrastructure (OCI) Data Science Notebook, a OCI com OpenSearch, o OCI Data Science AI Quick Actions (AI Quick Actions) e o serviço OCI Generative AI se integram perfeitamente para simplificar o desenvolvimento de aplicativos de grandes modelos de linguagem (LLM). Essas ferramentas aceleram os fluxos de trabalho, melhoram a produtividade e permitem a implementação mais rápida de soluções de IA de ponta personalizadas para necessidades comerciais específicas.
No primeiro tutorial: Tutorial 1: Integrar o OCI Search com OpenSearch e LangChain no OCI Data Science Notebook, discutimos o impacto transformador da integração de LangChain, OCI com OpenSearch e Hugging Face, demonstrando como essas tecnologias podem funcionar com o OCI Data Science Notebook para simplificar o desenvolvimento e a produção de soluções de pesquisa semântica para empresas. Detalhamos as etapas de configuração de ponta a ponta para configurar o OCI com OpenSearch, configurar o OCI Data Science Notebook, configurar LangChain com sessão de notebook e implantar um caso de uso completo para pesquisa semântica.
Com base nessa base, este tutorial se concentra em como a integração perfeita entre LangChain, OCI com OpenSearch, AI Quick Actions e OCI Generative AI pode acelerar o desenvolvimento de aplicativos LLM para casos de uso de negócios personalizados. Vamos mergulhar particularmente em soluções em torno de pesquisa conversacional, geração aumentada de recuperação (RAG) e chatbots de resposta a perguntas, mostrando como essas ferramentas juntas capacitam os desenvolvedores a superar desafios e fornecer aplicativos inovadores e escaláveis com codificação mínima.
Observação: Você pode encontrar as amostras de código completas para este tutorial em nosso repositório de amostras públicas aqui: Amostras de Código de Serviço do OCI OpenSearch.
Benefícios da abordagem integrada
-
Complexidade reduzida: A integração perfeita entre LangChain, serviços da OCI e notebooks elimina a necessidade de pipelines complexos e reduz a sobrecarga de desenvolvimento.
-
Tempo de lançamento mais rápido: os desenvolvedores podem criar protótipos, testar e implementar aplicativos rapidamente, garantindo uma entrega mais rápida de valor aos usuários.
-
Escalabilidade e Flexibilidade: A infraestrutura robusta da OCI suporta as crescentes demandas de aplicações corporativas, enquanto o design modular da LangChain permite fácil expansão.
-
Produtividade aprimorada: Ao automatizar tarefas repetitivas e simplificar fluxos de trabalho, os desenvolvedores podem se concentrar na inovação, em vez de nos desafios operacionais.
A criação de aplicativos com LLMs envolve várias etapas:
- Acesso e implantação de modelos de alto desempenho.
- Modelos de ajuste fino com dados específicos do domínio.
- Integração de sistemas de recuperação para consulta eficiente de dados.
- Teste, avaliação e implantação de modelos em escala.
Cada etapa pode exigir ferramentas especializadas, pipelines intrincados e esforço de desenvolvimento significativo. Ao integrar o LangChain aos serviços da OCI, os desenvolvedores podem enfrentar esses desafios de forma holística, reduzindo a complexidade e aumentando a produtividade.
Objetivos
-
Entenda como funciona a integração LangChain, OCI com OpenSearch, OCI Data Science Notebook, OCI Generative AI e AI Quick Actions.
-
Saiba como implantar um modelo de LLM usando Ações Rápidas de IA.
-
Aproveite a integração do LangChain usando OCI com OpenSearch, serviço OCI GenAI e OCI Data Science para acelerar o desenvolvimento de aplicativos LLM.
Pré-requisitos
-
Crie um cluster OpenSearch com a versão 2.11 ou posterior. Para obter mais informações, consulte Pesquisar e Visualizar Dados usando o Oracle Cloud Infrastructure Search com OpenSearch.
-
Criar uma sessão do OCI Data Science Notebook. Para obter mais informações, consulte Visão Geral do Serviço Data Science, você também pode ler o primeiro tutorial: Integrar o OCI com OpenSearch e LangChain no OCI Data Science Notebook ou seguir Configurar o Data Science Notebook na Sua Tenancy.
Tarefa 1: Criar um Projeto do OCI Data Science e Configurar Notebooks
O OCI Data Science Notebook fornece uma plataforma flexível e interativa para desenvolver, testar e implementar aplicativos de IA. A integração de notebooks com serviços da OCI cria uma experiência de desenvolvimento perfeita, reduzindo a necessidade de ferramentas externas. Com notebooks você pode:
- Aplicativos Protótipo: Experimente LangChain, OCI Generative AI e OCI com integrações OpenSearch.
- Executar Workflows: Execute workflows de ajuste, implantação e recuperação.
- Colaborar: Compartilhe e itere projetos com membros da equipe.
Para criar um projeto do OCI Data Science e configurar um notebook, consulte Tarefa 2: Iniciar um Jupyter Notebook no OCI Data Science.
Tarefa 2: Instalar LangChain
O LangChain é uma das estruturas mais versáteis para o desenvolvimento de aplicativos baseados em LLM. Seu design modular e biblioteca expansiva fornecem abstrações robustas para:
- Gerenciamento de Prompt: Simplifique e otimize a criação de prompt para diferentes casos de uso.
- Suporte do Agente: Crie agentes inteligentes que interajam com APIs ou ferramentas externas.
- Interfaces de Dados: Integre origens de dados, sistemas de recuperação e armazenamentos de vetores.
A capacidade da LangChain de interagir perfeitamente com serviços de nuvem como OCI Generative AI, OCI com OpenSearch e OCI Data Science aprimora sua utilidade para criar aplicações de nível empresarial. A flexibilidade do LangChain permite que os desenvolvedores criem protótipos e iterem rapidamente em aplicativos, tornando-o ideal para RAG e soluções de pesquisa conversacional. Suas integrações com serviços da OCI simplificam ainda mais o processo de desenvolvimento, permitindo que os desenvolvedores se concentrem na entrega de valor. No primeiro tutorial, falamos sobre como configurar o LangChain com o ambiente de notebook e analisamos um exemplo de ponta a ponta de como usar o LangChain para processar dados não estruturados, ingeri-los na OCI com o OpenSearch e executar pesquisa semântica.
Execute o comando a seguir no seu notebook para configurar LangChain e outras bibliotecas de chaves.
!pip install -U oci oracle_ads langchain langchain-community langchain-huggingface opensearch-py pypdf
Tarefa 3: Usar LangChain para Pré-processar e Dividir seus Dados
Use o código Python a seguir.
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)
Tarefa 4: Configurar o Modelo de Incorporação com a OCI Generative AI Cohere
O serviço OCI Generative AI fornece uma plataforma totalmente gerenciada para acessar LLMs de última geração, como Cohere e Meta LLaMA-3. Ele suporta os seguintes modelos:
- Modelos sob Demanda: Acesse modelos pré-treinados prontos para inferência.
- Modelos Personalizados: Ajuste os LLMs com dados específicos do domínio para respostas personalizadas.
- Clusters de IA escaláveis: Aproveite a infraestrutura de alto desempenho para implementações em larga escala.
A principal diferença entre AI Quick Actions e OCI Generative AI é que AI Quick Actions tem um catálogo de modelos mais extenso e oferece muito mais flexibilidade com treinamento, avaliação, ajuste fino e gerenciamento do ciclo de vida do modelo. A principal vantagem com a OCI Generative AI é que você não precisa possuir a infraestrutura que hospeda seu modelo. Você pode usar o ponto final genérico para qualquer um dos modelos disponíveis e só é cobrado com base no número de solicitações e no número de tokens. Em contraste, com o AI Quick Actions, enquanto você tem mais autonomia sobre seu LLM ou qualquer orquestração e ciclo de vida de fluxo de trabalho de IA/ML, você paga apenas pelo custo da infraestrutura e tem solicitações ilimitadas.
Além disso, o serviço OCI Generative AI está pronto para usar modelos de incorporação empresarial, como o modelo Cohere Embed V3, criado para dados corporativos e conhecido por ter um desempenho melhor do que outros modelos de transformador de frases pré-treinados, especialmente em dados personalizados. Você só precisa chamar esse modelo para gerar incorporação para seus dados. Portanto, acreditamos que combinar IA generativa da OCI e ações rápidas de IA pode oferecer o melhor valor para sua aplicação de negócios. Você pode chamar o ponto final do modelo de incorporação da OCI Generative AI Cohere já implantado para incorporar seus dados e usar Ações Rápidas de IA para ajustar, testar, avaliar e implantar seu modelo.
O LangChain se integra perfeitamente ao OCI Generative AI e ao AI Quick Action, permitindo que os desenvolvedores chamem modelos diretamente de seu ambiente OCI. Com configuração mínima, os desenvolvedores podem começar a usar modelos pré-treinados ou ajustados.
Veja a seguir um exemplo de como você pode usar a integração LangChain para chamar o modelo incorporado V3 da Cohere e usá-lo para incorporar seus documentos durante a ingestão de dados.
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"}
)
Tarefa 5: Configurar o OCI com OpenSearch com LangChain para Ativar Workflows RAG
A RAG conta com sistemas de recuperação rápidos e precisos. O OCI com o serviço OpenSearch fornece a infraestrutura para:
- Dados de Índice e Consulta: Armazene grandes conjuntos de dados e recupere informações relevantes rapidamente.
- Pesquisa Semântica: Melhore a precisão da recuperação usando incorporações.
- Escalabilidade: lidar com a expansão de conjuntos de dados sem comprometer o desempenho.
A funcionalidade de armazenamento de vetores da LangChain se integra à OCI com o OpenSearch para oferecer suporte a fluxos de trabalho RAG. Os desenvolvedores podem usar incorporações da OCI Generative AI para indexar e recuperar dados com eficiência da OCI com o OpenSearch.
Use o código Python a seguir.
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)
Tarefa 6: Ingerir seus Dados
Use o código Python a seguir para ingerir seus dados.
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)
Tarefa 7: Configurar LLM para RAG com LangChain
O AI Quick Actions no OCI Data Science elimina a complexidade da implementação e do gerenciamento de LLMs. Ele fornece uma interface sem código para:
- Implantação de Modelo: Implante modelos pré-treinados ou ajustados como pontos finais HTTP.
- Ajuste: Treine modelos com conjuntos de dados personalizados para melhorar o desempenho específico do domínio.
- Avaliação: Teste modelos usando métricas como ROUGE e BERTScore.
O AI Quick Actions é fácil de usar e acessível por meio do ambiente OCI Data Science Notebook. Proporciona uma grande flexibilidade. Por exemplo, você pode usar conjuntos de dados armazenados no OCI Object Storage ou no seu notebook local para treinar, ajustar ou avaliar seu modelo. Também é uma solução muito econômica, pois não há custos adicionais além dos custos subjacentes de computação e armazenamento. Mais importante ainda, você pode acessar um catálogo de modelos verificados disponíveis no AI Quick Actions, prontos para implementação com apenas alguns cliques. Além disso, você tem a flexibilidade de ajustar e avaliar qualquer um desses modelos em seu conjunto de dados personalizado sem escrever nenhum código. Sem mencionar a opção de trazer seus próprios artefatos de modelo e simplesmente implantar com o AI Quick Actions sem ter que se preocupar com infra complexidades. Por fim, você pode usar a interface de prompt integrada para testar e avaliar o desempenho do seu modelo implantado.
A Ação Rápida do AI está disponível na sua sessão do OCI Data Science Notebook. Para usar o AI Quick Actions, certifique-se de configurar as políticas necessárias em sua tenancy. Para obter mais informações, consulte Políticas de Ações Rápidas de IA.
-
Clique em Ações rápidas de IA para iniciar Ações Rápidas de IA na sua sessão de notebook.
-
Acesse o Catálogo de Modelos LLM.
-
Clique em Implantações e Criar implantação.
-
Na página Implantar modelo, informe os detalhes necessários para criar uma implantação de modelo.
-
Depois que o modelo for criado, você poderá exibir e testar o modelo implantado.
-
Criar avaliação para modelo implantado.
Execute o código a seguir para usar a integração LangChain para chamar um modelo de LLM implantado para resposta a perguntas. Nesse caso, usaremos o modelo de LLM implantado com AI Quick Actions, chamando seu ponto final de previsão da seguinte forma:
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?")
Tarefa 8: Executar Pesquisa de Conversa e RAG
Use o código Python a seguir para executar pesquisa de conversa e 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)
O código completo para este aplicativo RAG pode ser encontrado aqui: Notebook de amostra do OCI OpenSearch Service. Todo o repositório GitHub deste tutorial pode ser encontrado aqui: opensearch-integration-with-langchain.
Próximas Etapas
A integração de LangChain, OCI com OpenSearch, AI Quick Actions, OCI Generative AI e notebooks oferece uma solução abrangente para criar aplicações de LLM. Quer você esteja desenvolvendo sistemas RAG ou ferramentas de pesquisa conversacional, essas tecnologias trabalham juntas para fornecer soluções poderosas, escaláveis e eficientes.
Ao adotar essa abordagem integrada, os desenvolvedores podem desbloquear todo o potencial da IA generativa e fornecer aplicativos transformadores que impulsionam o sucesso dos negócios. Comece a explorar essas ferramentas hoje mesmo e dê o primeiro passo para construir o futuro das aplicações baseadas em IA.
Links Relacionados
Confirmações
-
Autors - Landry Kezebou (Engenheiro Sênior de Aprendizado de Máquina, OCI OpenSearch), Sreeni Simhadri (Diretor Sênior de Desenvolvimento de Software), Saiprasad Sethuram (Engenharia de Gerente Sênior)
-
Contribuintes - Julien Lehmann (Gerente de Marketing de Produto, Oracle Data Platform), Andy Hind (Arquiteto de Aplicativos Sênior)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Integrate LangChain, OCI Data Science Notebook, OCI with OpenSearch and OCI Generative AI to Accelerate LLM Development for RAG and Conversational Search
G25117-01
January 2025