LLMs und Einbettungen

Auf dieser Seite werden die abstrakten Schnittstellen vorgestellt, mit denen LLMs und Einbettungen in den Oracle Agent-Speicher integriert werden.

LLM-Schnittstelle

Klasse oracleagentmemory.apis.llms.ILlm

Basen: ABC

Abstrakte Schnittstelle für LLM-Aufruf.

Methode generate (Übung)

Generieren Sie eine Antwort von einem LLM synchron.

Methode generate_async (abstrakt, asynchron)

Generieren Sie asynchron eine Antwort aus einem LLM.

LLM-Antworten

Klasse oracleagentmemory.apis.llms.LlmResponse

Basis: object

Eine kleine normalisierte Antwort, die von ILlm zurückgegeben wird.

Text

Der primäre generierte Textinhalt.

Einbettungsschnittstelle

Klasse oracleagentmemory.apis.IEmbedder

Basen: ABC

Abstrakte Schnittstelle für Texteinbettungen.

Methode embed (Übung)

Integrieren Sie eine Reihe von Texten in ein 2D float32 NumPy Array.

Methode embed_async (abstrakt, asynchron)

Integrieren Sie eine Reihe von Texten in ein 2D float32 NumPy Array.

Eigenschaft embedding_dimension

Unterklassen können diese Eigenschaft außer Kraft setzen, wenn die Einbettungsbreite aus Konfigurations- oder Providermetadaten bekannt ist. Die Standardimplementierung prüft einmal embed() und cacht die Ergebnisgröße.

Eigenschaft max_input_tokens

Unterklassen können diese Eigenschaft überschreiben, wenn das Eingabebudget des Modells aus Konfigurations- oder Providermetadaten bekannt ist. Die Standardimplementierung validiert eine Stichprobengröße einmal auf geschätzte 512-Eingabetoken und cacht 512 als konservatives Fallback. Ein Modell-Tokenizer wird nicht lokal ausgeführt. Daher sollten Aufrufer max_input_tokens manuell festlegen, wenn das tatsächliche Eingabebudget des Modells bekannt ist.

LiteLLM-Adapter

Klasse oracleagentmemory.core.llms.LlmApiType

Basis: str, Enum

Unterstützte OpenAI-kompatible API-Familien für Llm.

CHAT_COMPLETIONS = 'CHAT_COMPLETIONS'

RESPONSES = 'RESPONSES'

Klasse oracleagentmemory.core.llms.Llm

Basis: ILlm

Adapter zum Generieren von Modellantworten.

LLM-Adapter erstellen

Beispiele

OCI Generative AI-Modelle verwenden die "oci/..."-Modell-IDs von LiteLLM. Ein gängiges Setup besteht darin, OCI-API-Schlüsselauthentifizierungsdetails aus der OCI-Standardkonfigurationsdatei über LiteLLM-spezifische Schlüsselwortargumente zu übergeben. Das OCI-Python-SDK wird von diesem Package nicht installiert. Anwendungen, die bereits davon abhängig sind, können alternativ ein oci_signer-Objekt übergeben.

import configparser
from pathlib import Path
parser = configparser.RawConfigParser()
parser.read(Path("~/.oci/config").expanduser())
cfg = parser["DEFAULT"]
key_file = Path(cfg["key_file"]).expanduser()
oci_llm = Llm(
    model="oci/openai.gpt-oss-120b",
    oci_compartment_id="ocid1.compartment.oc1..example",
    oci_region=cfg.get("region", "us-chicago-1"),
    oci_user=cfg["user"],
    oci_fingerprint=cfg["fingerprint"],
    oci_tenancy=cfg["tenancy"],
    oci_key_file=str(key_file),
)
oci_llm.generate("Reply with OK.")

OpenAI-gehostete Modelle verwenden LiteLLM-Modell-IDs wie "openai/gpt-5.1" und einen OpenAI-API-Schlüssel. Chat-Abschlüsse sind die Standard-API-Familie.

openai_llm = Llm(
    model="openai/gpt-5.1",
    api_key="sk-example",
    temperature=0,
    max_tokens=128,
)
openai_llm.model
'openai/gpt-5.1'
openai_llm.generate("Reply with OK.")

Verwenden Sie api_type=LlmApiType.RESPONSES, wenn das Zielmodell über die OpenAI-Antworten-API anstelle von Chatabschlüssen aufgerufen werden soll.

responses_llm = Llm(
    model="openai/gpt-5.4",
    api_key="sk-example",
    api_type=LlmApiType.RESPONSES,
    reasoning_effort="high",
    stream=True,
)
responses_llm.model
'openai/gpt-5.4'

Selbst gehostete OpenAI-kompatible Server, einschließlich vLLM, werden mit einer Modell-ID "openai/..." plus der Basis-URL /v1 des Servers aufgerufen. Übergeben Sie eine nominale api_key, wie "none", wenn der Endpunkt die Authentifizierung nicht erzwingt.

vllm_llm = Llm(
    model="openai/openai/gpt-oss-120b",
    api_base="http://localhost:8000/v1",
    api_key="none",
    stream=True,
)
vllm_llm.model
'openai/openai/gpt-oss-120b'
vllm_llm.generate("Reply with OK.")

Methode generate

Generieren Sie eine Antwort.

Methode generate_async (asynchron)

Antwort asynchron generieren.

Klasse oracleagentmemory.core.embedders.Embedder

Basis: IEmbedder

Provider-backed-Einbettung.

Providerbacked Embedder erstellen

Beispiele

OCI Generative AI-Einbettungsmodelle verwenden "oci/..."-Modell-IDs. Ein gängiges Setup besteht darin, OCI-API-Schlüsselauthentifizierungsdetails aus der OCI-Standardkonfigurationsdatei über LiteLLM-spezifische Schlüsselwortargumente zu übergeben. Das OCI-Python-SDK wird von diesem Package nicht installiert. Anwendungen, die bereits davon abhängig sind, können alternativ ein oci_signer-Objekt übergeben.

import configparser
from pathlib import Path
parser = configparser.RawConfigParser()
parser.read(Path("~/.oci/config").expanduser())
cfg = parser["DEFAULT"]
key_file = Path(cfg["key_file"]).expanduser()
oci_embedder = Embedder(
    model="oci/cohere.embed-english-v3.0",
    oci_compartment_id="ocid1.compartment.oc1..example",
    oci_region=cfg.get("region", "us-chicago-1"),
    oci_user=cfg["user"],
    oci_fingerprint=cfg["fingerprint"],
    oci_tenancy=cfg["tenancy"],
    oci_key_file=str(key_file),
)
oci_embedder.embed(["hello world"])

OpenAI-gehostete Einbettungsmodelle verwenden IDs wie "openai/text-embedding-3-small" mit einem OpenAI-API-Schlüssel.

openai_embedder = Embedder(
    model="openai/text-embedding-3-small",
    api_key="sk-example",
    truncate_prompt_tokens=8192,
)
openai_embedder.model
'openai/text-embedding-3-small'
openai_embedder.embed(["hello world"])

Selbst gehostete OpenAI-kompatible Einbettungsserver, einschließlich vLLM, verwenden das Providerpräfix "hosted_vllm/..." mit der Basis-URL /v1 des Servers.

vllm_embedder = Embedder(
    model="hosted_vllm/sentence-transformers/all-MiniLM-L6-v2",
    api_base="http://localhost:8000/v1",
)
vllm_embedder.model
'hosted_vllm/sentence-transformers/all-MiniLM-L6-v2'
vllm_embedder.embed(["hello world"])

Methode embed

Einbetten eines Textbatches mit dem konfigurierten Provider.

Methode embed_async (asynchron)

Einbetten eines Textbatches mit dem konfigurierten Provider asynchron.

Eigenschaft embedding_dimension

Hinweise

Ein vom Konstruktor angegebener Wert wird zurückgegeben, ohne den Provider zu kontaktieren. Andernfalls prüft die Eigenschaft einmal und speichert das Ergebnis im Cache.

Eigenschaft max_input_tokens

Hinweise

Ein vom Konstruktor angegebener Wert wird zurückgegeben, ohne den Provider zu kontaktieren. Andernfalls validiert die Eigenschaft eine Provider-Probe, deren Größe auf geschätzte 512-Eingabetoken geschätzt wird, und cacht 512 als konservatives Fallback. Ein Modell-Tokenizer wird nicht lokal ausgeführt. Legen Sie daher max_input_tokens manuell aus dem dokumentierten Eingabebudget des Modells fest, wenn die Genauigkeit wichtig ist.

Oracle DB-Einbettungen

Klasse oracleagentmemory.core.embedders.OracleDBEmbedder

Basis: IEmbedder

Text einbetten, indem Sie Oracle Database-Einbettungs-SQL aufrufen.

Durch diese Einbettung bleibt der vorhandene Einbettungsvertrag des Packages intakt, während die Einbettungsgenerierung über SQL an die Datenbank delegiert wird. Die direkte Einbettung bevorzugt VECTOR_EMBEDDING für datenbankresidente Modellkonfigurationen und fällt zurück auf DBMS_VECTOR_CHAIN.UTL_TO_EMBEDDING, wenn die Vectorizer-Konfiguration die Oberfläche des JSON-Providerparameters benötigt.

Erstellen Sie einen Einbettungsknoten, der von der SQL-Ausführung von Oracle Database unterstützt wird.

Beispiele

Verwenden Sie einen Oracle-Verbindungspool und ein DB-residentes Einbettungsmodell:

import oracledb
pool = oracledb.create_pool(
    user="scott",
    password="tiger",
    dsn="dbhost.example.com/orclpdb",
)
embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
    embedding_dimension=768,
)
embedder.embed(["hello world"])

Schema-qualifizierte Modellnamen können verwendet werden, wenn das verbundene Schema über Berechtigungen für ein Modell verfügt, das einem anderen Schema gehört:

shared_embedder = OracleDBEmbedder(
    connection=pool,
    model="MY_OTHER_SCHEMA.MY_ONNX_MODEL",
    embedding_dimension=768,
)
shared_embedder.embed(["hello world"])

Abfragespezifische Präfixe können ohne Änderung der Speicher-API konfiguriert werden:

embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
    query_prefix="search_document: ",
)
embedder.embed(["pizza"], is_query=True)

Methode embed

Integrieren Sie einen Textbatch, indem Sie SQL in Oracle Database ausführen.

Beispiele

embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
)
matrix = embedder.embed(["alpha", "beta"])
matrix.shape[0]
2

Methode embed_async (asynchron)

Mit Oracle Database SQL asynchron einen Textbatch einbetten.

Beispiele

embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
)
matrix = await embedder.embed_async(["hello"])
matrix.shape
(1, 384)

Eigenschaft embedding_dimension

Hinweise

Ein vom Konstruktor bereitgestellter Wert wird zurückgegeben, ohne das Datenbankmodell zu kontaktieren. Andernfalls prüft die Eigenschaft einmal und speichert das Ergebnis für zukünftige Zugriffe im Cache.

Beispiele

embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
    embedding_dimension=768,
)
embedder.embedding_dimension
768

Methode get_vectorizer_config_json

Geben Sie JSON für die Oracle Vectorizer-Voreinstellung für dieses DB-Modell zurück.

Dieselbe Modellkonfiguration wird durch direkte Einbettung und durch verwaltete Hybridindizes verwendet. Die direkte Einbettung verwendet sie, um zu entscheiden, ob VECTOR_EMBEDDING das konfigurierte Datenbankmodell darstellen kann oder ob DBMS_VECTOR_CHAIN.UTL_TO_EMBEDDING für Provider-JSON erforderlich ist. Die Hybridindizierung übergibt sie an DBMS_VECTOR_CHAIN.CREATE_PREFERENCE, und dann ist die Vectorizer-Pipeline von Oracle Eigentümer der Einbettungsarbeit für diesen Index.

Beispiele

embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
    embedding_dimension=768,
)
embedder.get_vectorizer_config_json()
'{"model":"DOC_MODEL"}'
custom_embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
    input_name="TEXT",
    embedding_dimension=768,
)
custom_embedder.get_vectorizer_config_json()
'{"model":"DOC_MODEL","input_name":"TEXT"}'
shared_embedder = OracleDBEmbedder(
    connection=pool,
    model="MY_OTHER_SCHEMA.MY_ONNX_MODEL",
    embedding_dimension=768,
)
shared_embedder.get_vectorizer_config_json()
'{"model":"MY_OTHER_SCHEMA.MY_ONNX_MODEL"}'

Eigenschaft max_input_tokens

Hinweise

Ein vom Konstruktor bereitgestellter Wert wird zurückgegeben, ohne das Datenbankmodell zu kontaktieren. Andernfalls validiert die Eigenschaft eine Datenbankmodell-Sondierung in der Größe auf geschätzte 512-Eingabetoken und cacht 512 als konservatives Fallback. Ein Modell-Tokenizer wird nicht lokal ausgeführt. Legen Sie daher max_input_tokens manuell aus dem dokumentierten Eingabebudget des Modells fest, wenn die Genauigkeit wichtig ist.

Beispiele

embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
    max_input_tokens=2048,
)
embedder.max_input_tokens
2048