Caixa de ferramentas para construir aplicativos de IA generativa com base no Apache Spark.
Muitos desenvolvedores de empresas estão tentando aproveitar LLMs para aprimorar seus aplicativos existentes ou construir aplicativos completamente novos. Graças aos LLMs, a maioria deles não precisa mais treinar novos modelos de ML. No entanto, o maior desafio ainda são os dados e a infraestrutura. Isso inclui ingestão de dados, transformação, vetorização, pesquisa e serviço de modelo.
Nos últimos meses, a indústria assistiu a um impulso de novas ferramentas e estruturas para ajudar a enfrentar estes desafios. No entanto, nenhum deles é fácil de usar, implantar em produção, nem consegue lidar com a escala dos dados.
Este projeto tem como objetivo fornecer uma caixa de ferramentas de extensões, fontes de dados e utilitários do Spark para facilitar a construção de uma infraestrutura de dados robusta no Spark para aplicativos de IA generativa.
Exemplos completos que qualquer pessoa pode usar para construir seus próprios aplicativos de IA generativa.
Leia sobre nossas idéias sobre engenharia Prompt, LLMs e Low-code aqui.
Atualmente, o projeto é voltado principalmente para usuários do PySpark, porém, por também contar com conectores de alto desempenho, tanto as dependências do PySpark quanto do Scala devem estar presentes no cluster Spark.
from spark_ai . webapps . slack import SlackUtilities
# Batch version
slack = SlackUtilities ( token = 'xoxb-...' , spark = spark )
df_channels = slack . read_channels ()
df_conversations = slack . read_conversations ( df_channels )
# Live streaming version
df_messages = ( spark . readStream
. format ( 'io.prophecy.spark_ai.webapps.slack.SlackSourceProvider' )
. option ( 'token' , 'xapp-...' )
. load ())
from spark_ai . llms . openai import OpenAiLLM
from spark_ai . dbs . pinecone import PineconeDB
OpenAiLLM ( api_key = 'sk-...' ). register_udfs ( spark = spark )
PineconeDB ( '8045...' , 'us-east-1-aws' ). register_udfs ( self . spark )
( df_conversations
# Embed the text from every conversation into a vector
. withColumn ( 'embeddings' , expr ( 'openai_embed_texts(text)' ))
# Do some more pre-processing
...
# Upsert the embeddings into Pinecone
. withColumn ( 'status' , expr ( 'pinecone_upsert( ' index-name ' , embeddings)' ))
# Save the status of the upsertion to a standard table
. saveAsTable ( 'pinecone_status' ))
df_messages = spark . readStream
. format ( "io_prophecy.spark_ai.SlackStreamingSourceProvider" )
. option ( "token" , token )
. load ()
# Handle a live stream of messages from Slack here
Fontes de dados suportadas:
Bancos de dados vetoriais suportados:
LLMs suportados:
Interfaces de aplicativos suportadas:
E muitos mais virão em breve (sinta-se à vontade para solicitar como problemas)!
✅: Disponibilidade Geral; ?: Disponibilidade beta; ?️: Roteiro;