Toolbox untuk membangun aplikasi AI Generatif di atas Apache Spark.
Banyak pengembang dan perusahaan mencoba memanfaatkan LLM untuk menyempurnakan aplikasi yang sudah ada atau membangun aplikasi yang benar-benar baru. Berkat LLM, sebagian besar dari mereka tidak perlu lagi melatih model ML baru. Namun, tantangan terbesarnya adalah data dan infrastruktur. Ini mencakup penyerapan data, transformasi, vektorisasi, pencarian, dan penyajian model.
Selama beberapa bulan terakhir, industri ini telah melihat munculnya alat dan kerangka kerja baru untuk membantu mengatasi tantangan ini. Namun, tidak ada satupun yang mudah digunakan, diterapkan ke produksi, dan tidak dapat menangani skala data.
Proyek ini bertujuan untuk menyediakan kotak peralatan ekstensi Spark, sumber data, dan utilitas untuk memudahkan pembangunan infrastruktur data yang kuat pada Spark untuk aplikasi AI Generatif.
Contoh lengkap yang dapat digunakan siapa saja untuk memulai membangun aplikasi AI Generatifnya sendiri.
Baca tentang pemikiran kami tentang teknik Prompt, LLM, dan Kode Rendah di sini.
Saat ini, proyek ini ditujukan terutama untuk pengguna PySpark, namun karena proyek ini juga dilengkapi konektor berkinerja tinggi, dependensi PySpark dan Scala harus ada di kluster 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
Sumber data yang didukung:
Basis data vektor didukung:
LLM yang didukung:
Antarmuka aplikasi yang didukung:
Dan masih banyak lagi yang akan segera hadir (jangan ragu untuk meminta jika ada masalah)!
✅: Ketersediaan Umum; ?: Ketersediaan beta; ?️: Peta Jalan;