Caja de herramientas para crear aplicaciones de IA generativa sobre Apache Spark.
Muchos desarrolladores y empresas intentan aprovechar los LLM para mejorar sus aplicaciones existentes o crear otras completamente nuevas. Gracias a los LLM, la mayoría de ellos ya no tienen que entrenar nuevos modelos de ML. Sin embargo, el mayor desafío sigue siendo el de los datos y la infraestructura. Esto incluye la ingesta, transformación, vectorización, búsqueda y servicio de modelos de datos.
En los últimos meses, la industria ha visto un auge de nuevas herramientas y marcos para ayudar con estos desafíos. Sin embargo, ninguno de ellos es fácil de usar, implementar en producción ni puede manejar la escala de datos.
Este proyecto tiene como objetivo proporcionar una caja de herramientas de extensiones, fuentes de datos y utilidades de Spark para facilitar la construcción de una infraestructura de datos sólida en Spark para aplicaciones de IA generativa.
Ejemplos completos con los que cualquiera puede empezar a crear sus propias aplicaciones de IA generativa.
Lea acerca de nuestras opiniones sobre ingeniería rápida, LLM y código bajo aquí.
Actualmente, el proyecto está dirigido principalmente a usuarios de PySpark; sin embargo, debido a que también cuenta con conectores de alto rendimiento, tanto las dependencias de PySpark como Scala deben estar presentes en el clúster 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
Fuentes de datos admitidas:
Bases de datos vectoriales compatibles:
LLM admitidos:
Interfaces de aplicación compatibles:
¡Y pronto habrá muchos más (no dudes en solicitarnos problemas)!
✅: Disponibilidad general; ?: Disponibilidad beta; ?️: Hoja de ruta;