GPTCache, LangChain, Starke Allianz
Einführung in GPTCache
ChatGPT und andere große Sprachmodelle (LLMs) verfügen über eine unglaubliche Vielseitigkeit, die für ein breites Spektrum der Anwendungsentwicklung genutzt werden kann. Da jedoch die Popularität von mit LLMs entwickelten Anwendungen zunimmt und das Verkehrsaufkommen wächst, können die mit LLM-API-Aufrufen verbundenen Kosten unerschwinglich teuer werden. Zusätzlich können LLM-Dienste bei der Verarbeitung großer Anfragevolumen langsame Antwortzeiten aufweisen.
Um diese Herausforderung zu bewältigen, haben wir das Projekt GPTCache erstellt, das dem Aufbau eines semantischen Caches zur Speicherung von LLM-Antworten gewidmet ist.
Einführung in LangChain
Große Sprachmodelle (LLMs) werden zu einer transformativen Technologie, die es Entwicklern ermöglicht, Anwendungen zu erstellen, die zuvor unmöglich waren. Sich jedoch ausschließlich auf ein einzelnes LLM zu verlassen, macht es oft schwierig, eine wirklich leistungsstarke Anwendung zu erstellen. Die wahre Stärke liegt darin, sie mit anderen Rechen- oder Wissensquellen zu kombinieren. Daher zielt die Bibliothek LangChain darauf ab, bei der Entwicklung dieser Arten von Anwendungen zu unterstützen.
Aktueller Status des LangChain-Caches
Vor der Integration von GPTCache basierte der LangChain-Cache auf Zeichenkettenabgleich. Bei diesem Ansatz des Zeichenkettenabgleichs kann die spätere Anfrage die entsprechenden Daten aus dem Cache abrufen, wenn zwei Anfragen identische Zeichenketten haben. Die Implementierung umfasst Memory Cache, SQLite Cache und Redis Cache.
Die Verwendung sieht ungefähr wie folgt aus:
import langchain
from langchain.cache import InMemoryCache
langchain.llm_cache = InMemoryCache()
llm = OpenAI(model_name="text-davinci-002", n=2, best_of=2)
// CPU times: user 14.2 ms, sys: 4.9 ms, total: 19.1 ms
// Wall time: 1.1 s
llm("Tell me a joke")
// CPU times: user 162 µs, sys: 7 µs, total: 169 µs
// Wall time: 175 µs
llm("Tell me a joke")
Analyse des LangChain-Caches
Aus Laufzeitperspektive ist klar, dass ein Cache-Treffer die Antwortzeit erheblich reduziert. Gleichzeitig sind die derzeitigen Kosten für die Nutzung von LLMs relativ hoch. Die Nutzung von Online-Diensten wie OpenAI und Cohere verursacht im Allgemeinen Gebühren über Tokens oder durch das eigenständige Bereitstellen des entsprechenden LLM-Modells, wobei die einmalige Inferenzzeit von der Anzahl der Computerressourcen abhängt, einschließlich CPU, Arbeitsspeicher, GPU usw. Gleichzeitig bestehen bei der gleichzeitigen Verarbeitung mehrerer Anfragen höhere Anforderungen an die Rechenressourcen. Wenn Anfragen zahlreiche Male den Cache treffen, kann dies den Druck auf die Computerressourcen verringern und anderen Aufgaben mehr Rechenressourcen geben.
Die Bedingung dafür, dass LangChain den Cache trifft, ist, dass zwei Fragen identisch sein müssen. Leider ist es in der tatsächlichen Nutzung immer noch schwierig, den Cache zu treffen, und es gibt viel Raum für Verbesserungen bei der Cache-Nutzungsrate.
GPTCache-Integration
Die Integration von GPTCache wird die Funktionalität des LangChain-Cache-Moduls erheblich verbessern, die Cache-Trefferquote erhöhen und somit die LLM-Nutzungskosten und Antwortzeiten reduzieren. Denn GPTCache führt zunächst Einbettungsoperationen auf der Eingabe durch, um einen Vektor zu erhalten, und führt anschließend eine Vektor-Ähnlichkeitssuche im Cache-Speicher durch. Nach Erhalt der Suchergebnisse führt es eine Ähnlichkeitsbewertung durch und gibt zurück, sobald der festgelegte Schwellenwert erreicht ist. Durch Anpassen des Schwellenwerts kann die Genauigkeit seiner unscharfen Suchergebnisse verändert werden.
Ein Beispiel für die Verwendung von GPTCache für die Ähnlichkeitssuche in LangChain:
from gptcache import Cache
from gptcache.adapter.api import init_similar_cache
from langchain.cache import GPTCache
import hashlib
def get_hashed_name(name):
return hashlib.sha256(name.encode()).hexdigest()
def init_gptcache(cache_obj: Cache, llm: str):
hashed_llm = get_hashed_name(llm)
init_similar_cache(cache_obj=cache_obj, data_dir=f"similar_cache_{hashed_llm}")
langchain.llm_cache = GPTCache(init_gptcache)
# Beim ersten Mal ist es noch nicht im Cache, daher sollte es länger dauern
# CPU-Zeiten: user 1.42 s, sys: 279 ms, total: 1.7 s
# Wandzeit: 8.44 s
llm("Tell me a joke")
# Dies ist eine exakte Übereinstimmung, daher findet es sie im Cache
# CPU-Zeiten: user 866 ms, sys: 20 ms, total: 886 ms
# Wandzeit: 226 ms
llm("Tell me a joke")
# Dies ist keine exakte Übereinstimmung, liegt aber semantisch innerhalb der Distanz, also ein Treffer!
# CPU-Zeiten: user 853 ms, sys: 14.8 ms, total: 868 ms
# Wandzeit: 224 ms
llm("Tell me joke")
Wir bauen die Funktionalität von GPT-Cache weiter aus, und wenn Sie die Gelegenheit haben, es auszuprobieren, lassen Sie uns wissen, was Sie davon halten. Wir haben außerdem mehrere großartige Ressourcen für Sie, die Sie sich ansehen können!
Referenzen:
Weiterlesen

Cosmos World Foundation Model Platform for Physical AI
NVIDIA's Cosmos platform enables safe, digital twin training of GenAI models for physical applications, overcoming data scarcity and safety challenges.

How to Use Anthropic MCP Server with Milvus
MCP + Milvus: Streamline AI agent development with standardized data access, eliminating integration hassles while enhancing context and flexibility.

Bringing AI to Legal Tech: The Role of Vector Databases in Enhancing LLM Guardrails
Discover how vector databases enhance AI reliability in legal tech, ensuring accurate, compliant, and trustworthy AI-powered legal solutions.



