Boîte à outils pour créer des applications d'IA générative sur Apache Spark.
De nombreux développeurs et entreprises tentent de tirer parti des LLM pour améliorer leurs applications existantes ou en créer de toutes nouvelles. Grâce aux LLM, la plupart d'entre eux n'ont plus besoin de former de nouveaux modèles ML. Cependant, le défi majeur reste celui des données et de l’infrastructure. Cela inclut l'ingestion de données, la transformation, la vectorisation, la recherche et la diffusion de modèles.
Au cours des derniers mois, l’industrie a vu apparaître de nouveaux outils et cadres pour relever ces défis. Cependant, aucun d’entre eux n’est facile à utiliser, à déployer en production, ni à gérer l’ampleur des données.
Ce projet vise à fournir une boîte à outils d'extensions Spark, de sources de données et d'utilitaires pour faciliter la création d'une infrastructure de données robuste sur Spark pour les applications d'IA générative.
Des exemples complets à partir desquels tout le monde peut partir pour créer ses propres applications d'IA générative.
Découvrez nos réflexions sur l'ingénierie Prompt, les LLM et le Low-code ici.
Actuellement, le projet s'adresse principalement aux utilisateurs de PySpark, mais comme il propose également des connecteurs hautes performances, les dépendances PySpark et Scala doivent être présentes sur le 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
Sources de données prises en charge :
Bases de données vectorielles prises en charge :
LLM pris en charge :
Interfaces d'application prises en charge :
Et bien d’autres arriveront bientôt (n’hésitez pas à demander des numéros) !
✅ : Disponibilité générale ; ? : disponibilité bêta ; ?️ : Feuille de route ;