Toolbox zum Erstellen generativer KI-Anwendungen auf Basis von Apache Spark.
Viele Entwickler und Unternehmen versuchen, LLMs zu nutzen, um ihre bestehenden Anwendungen zu verbessern oder völlig neue zu erstellen. Dank LLMs müssen die meisten von ihnen keine neuen ML-Modelle mehr trainieren. Die größte Herausforderung sind jedoch immer noch Daten und Infrastruktur. Dazu gehören Datenaufnahme, Transformation, Vektorisierung, Suche und Modellbereitstellung.
In den letzten Monaten hat die Branche eine Flut neuer Tools und Frameworks erlebt, die bei der Bewältigung dieser Herausforderungen helfen sollen. Keines davon ist jedoch einfach zu verwenden, in der Produktion einsetzbar und kann auch nicht mit der Datenmenge umgehen.
Ziel dieses Projekts ist es, eine Toolbox mit Spark-Erweiterungen, Datenquellen und Dienstprogrammen bereitzustellen, um den Aufbau einer robusten Dateninfrastruktur auf Spark für generative KI-Anwendungen zu vereinfachen.
Vollständige Beispiele, mit denen jeder seine eigenen generativen KI-Anwendungen erstellen kann.
Lesen Sie hier unsere Gedanken zu Prompt Engineering, LLMs und Low-Code.
Derzeit richtet sich das Projekt hauptsächlich an PySpark-Benutzer. Da es jedoch auch über leistungsstarke Konnektoren verfügt, müssen sowohl die PySpark- als auch die Scala-Abhängigkeiten auf dem Spark-Cluster vorhanden sein.
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
Unterstützte Datenquellen:
Unterstützte Vektordatenbanken:
Unterstützte LLMs:
Unterstützte Anwendungsschnittstellen:
Und viele weitere folgen in Kürze (können Sie gerne als Ausgaben anfordern)!
✅: Allgemeine Verfügbarkeit; ?: Beta-Verfügbarkeit; ?️: Roadmap;