LLM geliştirmesi için Azure Databricks üzerinde LangChain
Önemli
Bunlar deneysel özelliklerdir ve API tanımları değişebilir.
Bu makalede, Azure Databricks'te büyük dil modellerinin (LLM) geliştirilmesini ve dağıtımını kolaylaştıran LangChain tümleştirmeleri açıklanmaktadır.
Bu LangChain tümleştirmeleri ile şunları yapabilirsiniz:
- LangChain uygulamanıza LLM'ler veya eklemeler olarak Databricks tarafından sunulan modelleri kullanın.
- Mozaik AI Vektör Arama'yı vektör depolama ve alma için tümleştirin.
- MLflow denemelerinde LangChain modellerinizi ve performansınızı yönetin ve izleyin.
- MLflow İzleme ile LangChain uygulamanızın geliştirme ve üretim aşamalarını izleme.
- PySpark DataFrame yükleyicisi ile PySpark DataFrame'den sorunsuz bir şekilde veri yükleyin.
- Spark DataFrame Aracısı veya Databricks SQL Aracısı ile doğal dil kullanarak verilerinizi etkileşimli olarak sorgular.
LangChain nedir?
LangChain, büyük dil modellerini (LLM) kullanan uygulamalar oluşturmaya yardımcı olmak için tasarlanmış bir yazılım çerçevesidir. LangChain'in gücü, geniş tümleştirme ve yetenek dizisinde yatmaktadır. API sarmalayıcıları, web kazıma alt sistemleri, kod çözümleme araçları, belge özetleme araçları ve daha fazlasını içerir. Ayrıca openAI, Anthropic, HuggingFace vb. büyük dil modellerini ve çeşitli veri kaynaklarını ve türlerini destekler.
LangChain geliştirmesi için MLflow'undan yararlanma
LangChain, kullanıcıların doğrudan Databricks'in içinde hem geliştirme hem de üretim ortamlarında deneme izleme ve gözlemlenebilirlik için MLflow'un güçlü araçlarından yararlanmasını sağlayan bir MLflow aroması olarak kullanılabilir. LangChain ile MLflow kullanma hakkında daha fazla ayrıntı ve kılavuz için MLflow LangChain flavor belgelerine bakın.
Databricks'te MLflow, bunu açık kaynak sürümünden ayıran ek özellikler seçerek geliştirme deneyiminizi aşağıdaki özelliklerle geliştirir:
- Tam olarak yönetilen MLflow İzleme Sunucusu: Databricks çalışma alanınızda anında kullanılabilir ve kurulum gecikmeleri olmadan denemeleri izlemeye başlamanıza olanak sağlar.
- Databricks Not Defterleri ile sorunsuz tümleştirme: Denemeler otomatik olarak not defterlerine bağlanarak izleme işleminin akışını sağlar.
- Databricksüzerinde MLflow İzleme
: Geliştirmeden üretime kadar uçtan uca gözlemlenebilirlik sağlayarak, çıkarım tablosu entegrasyonuyla üretim düzeyinde izleme sağlar. - Model yaşam döngüsü yönetimi:Unity Kataloğuile çalışma alanlarınızda erişim, denetim, köken ve model bulma üzerinde merkezi denetim sağlama.
- TümleşikMozaik AI Aracısı Değerlendirmesi: LangChain uygulamalarınızın kalitesini, maliyetini ve gecikme süresini değerlendirin.
Bu özelliklerden yararlanarak LangChain tabanlı projelerinizin geliştirilmesini, izlenmesini ve yönetilmesini iyileştirerek Databricks'i MLflow destekli yapay zeka girişimleri için en iyi seçenek haline getirebilirsiniz.
Gereksinimler
- Databricks Runtime 13.3 ML veya üzeri.
- LangChain Databricks tümleştirme paketini ve Databricks SQL bağlayıcısını yükleyin. Databricks, en son güncelleştirmelere sahip olduğunuzdan emin olmak için Pip'in LangChain'in en son sürümünü yüklemesini de önerir.
%pip install --upgrade databricks-langchain langchain-community langchain databricks-sql-connector
Databricks tarafından sunulan modelleri LLM veya ekleme olarak kullanma
Databricks Model Sunma kullanılarak sunulan bir LLM veya ekleme modeliniz varsa, bunu doğrudan OpenAI, HuggingFace veya başka bir LLM sağlayıcısının yerine LangChain'de kullanabilirsiniz.
Uç nokta sunan bir modeli LLM veya Eklemeler modeli olarak LangChain'de kullanmak için şunlar gerekir:
- Uç noktaya hizmet veren bir Azure Databricks modeline dağıtılan kayıtlı bir LLM veya ekleme modeli.
- Alternatif olarak, çalışma alanınızda dağıtılan ve hemen kullanıma hazır açık kaynak modellerin seçilmiş listesi olan
Foundation Model API'leri tarafından sunulan modelleri kullanabilirsiniz.
- Alternatif olarak, çalışma alanınızda dağıtılan ve hemen kullanıma hazır açık kaynak modellerin seçilmiş listesi olan
- CAN UÇ nokta için sorgu izni.
Sohbet modelleri
Aşağıdaki örnekte, Temel Modeller API'sini kullanarak Meta'nın Llama 3.1 70B Instruct modelinin LangChain'de LLM bileşeni olarak nasıl kullanılacağı gösterilmektedir.
from databricks_langchain import ChatDatabricks
chat_model = ChatDatabricks(
endpoint="databricks-meta-llama-3-1-70b-instruct"
temperature=0.1,
max_tokens=250,
)
chat_model.invoke("How to use Databricks?")
Uç noktayı, sunum uç noktasında dağıtılan özel modelinizle değiştirebilirsiniz. Akış, zaman uyumsuz çağrı ve işlev çağrısı gibi ek örnekler LangChain belgelerinde bulunabilir.
Eklemeler
Aşağıdaki örnekte, Temel Modeller API'sini databricks-bge-large-en
kullanarak ekleme modelinin LangChain'de ekleme bileşeni olarak nasıl kullanılacağı gösterilmektedir.
from databricks_langchain import DatabricksEmbeddings
embeddings = DatabricksEmbeddings(endpoint="databricks-bge-large-en")
Ek ayrıntılar LangChain belgelerinde bulunabilir
LLM'ler
Uyarı
Tamamlama modelleri eski bir özellik olarak kabul edilir. Modern modellerin çoğu sohbet tamamlama arabirimini kullanır ve bunun yerine ChatModel bileşeniyle kullanılmalıdır.
Aşağıdaki örnek, Tamamlama modeli API'nizi LangChain'de LLM bileşeni olarak nasıl kullanacağınızı gösterir.
from langchain_community.llms import Databricks
llm = Databricks(endpoint_name="falcon-7b-instruct", model_kwargs={"temperature": 0.1, "max_tokens": 100})
llm("How are you?")
Mozaik AI Vektör Arama'yı vektör deposu olarak kullanma
Mozaik AI Vektör Arama , Databricks'teki sunucusuz bir benzerlik arama altyapısıdır ve meta veriler dahil olmak üzere verilerinizin vektör gösterimlerini bir vektör veritabanında depolamanıza olanak tanır. Unity Kataloğu tarafından yönetilen Delta tablolarından otomatik güncelleştirme vektör arama dizinleri oluşturabilir ve bunları en benzer vektörleri almak için basit bir API aracılığıyla sorgulayabilirsiniz.
Bu özelliği LangChain'de kullanmak için bir DatabricksVectorSearch
örnek oluşturun:
from databricks_langchain import DatabricksVectorSearch
vector_store = DatabricksVectorSearch(index_name="<YOUR_VECTOR_SEARCH_INDEX_NAME>")
retriever = vector_store.as_retriever(search_kwargs={"k": 5})
retriever.invoke("What is Databricks?")
Diğer ayrıntılar için DatabricksVectorSearch belgelerine bakın.
Unity Kataloğu işlevini araç olarak kullanma
Not
Unity Kataloğu işlev tümleştirmesi langchain-community
paketindedir. İşlevselliklerine erişmek için kullanarak %pip install langchain-community
yüklemeniz gerekir. Bu tümleştirme, gelecek bir sürümde pakete databricks-langchain
geçirilecek.
Sql veya Python işlevlerini Unity Kataloğu'nda LangChain aracınız için araçlar olarak kullanıma açabilirsiniz. Unity Kataloğu işlevlerini oluşturma ve LangChain'de kullanma hakkında tam yönergeler içindatabricks UC araç seti
PySpark DataFrame yükleyicisi ile veri yükleme
LangChain'deki PySpark DataFrame yükleyicisi, pyspark DataFrame'den tek bir yöntemle veri yüklemeyi basitleştirir.
from langchain.document_loaders import PySparkDataFrameLoader
loader = PySparkDataFrameLoader(spark, wikipedia_dataframe, page_content_column="text")
documents = loader.load()
Aşağıdaki not defteri, MLflow ile günlüğe kaydedilen ve modelin mlflow.pyfunc.load_model()
ile çıkarım için genel amaçlı bir Python işlevi olarak yorumlanabilmesini sağlayan, PySpark DataFrame yükleyicisinin bir veritabanı sorgulama tabanlı sohbet botu oluşturmak için kullanıldığı bir örneği gösterir.
Langchain not defterinde PySpark DataFrame yükleyicisi ve MLflow
not defteri alma
Spark DataFrame Aracısı
LangChain'deki Spark DataFrame Aracısı, soru yanıtlama için iyileştirilmiş bir Spark DataFrame ile etkileşime olanak tanır. LangChain'in Spark DataFrame Aracısı belgeleri , Spark DataFrame Aracısı'nı bir DataFrame ile oluşturma ve kullanma hakkında ayrıntılı bir örnek sağlar.
from langchain.agents import create_spark_dataframe_agent
df = spark.read.csv("/databricks-datasets/COVID/coronavirusdataset/Region.csv", header=True, inferSchema=True)
display(df)
agent = create_spark_dataframe_agent(llm=OpenAI(temperature=0), df=df, verbose=True)
...
Aşağıdaki not defteri, verilerinizle ilgili içgörüler elde etmenize yardımcı olmak için Spark DataFrame Aracısı'nın nasıl oluşturulacağını ve kullanılacağını gösterir.
Spark DataFrame not defteriyle etkileşime geçmek için LangChain kullanma
Databricks SQL Aracısı
Databricks SQL Aracısı tüm Azure Databricks kullanıcıları Unity Kataloğu'nda belirtilen bir şemayla etkileşime girip verileriyle ilgili içgörüler oluşturabilir.
Önemli
Databricks SQL Aracısı yalnızca tabloları sorgulayabilir ve tablo oluşturmaz.
Aşağıdaki örnekte veritabanı örneği komutu içinde SQLDatabase.from_databricks(catalog="...", schema="...")
oluşturulur ve aracı ve gerekli araçlar sırasıyla ve SQLDatabaseToolkit(db=db, llm=llm)
tarafından create_sql_agent(llm=llm, toolkit=toolkit, **kwargs)
oluşturulur.
from langchain.agents import create_sql_agent
from langchain.agents.agent_toolkits import SQLDatabaseToolkit
from langchain.sql_database import SQLDatabase
from langchain import OpenAI
from databricks_langchain import ChatDatabricks
# Note: Databricks SQL connections eventually time out. We set pool_pre_ping: True to
# try to ensure connection health is checked before a SQL query is made
db = SQLDatabase.from_databricks(catalog="samples", schema="nyctaxi", engine_args={"pool_pre_ping": True})
llm = ChatDatabricks(
endpoint="databricks-meta-llama-3-1-70b-instruct",
temperature=0.1,
max_tokens=250,
)
toolkit = SQLDatabaseToolkit(db=db, llm=llm)
agent = create_sql_agent(llm=llm, toolkit=toolkit, verbose=True)
agent.run("What is the longest trip distance and how long did it take?")
Aşağıdaki not defteri, veritabanınızdaki verileri daha iyi anlamanıza yardımcı olmak için Databricks SQL Aracısı'nın nasıl oluşturulacağını ve kullanılacağını gösterir.
SQL veritabanı not defteriyle etkileşime geçmek için LangChain kullanma
not defteri alma