Benutzer-Werkzeuge

Webseiten-Werkzeuge


ki:deepseek_oracle

Erste Erfahrungen mit einem KI Model wie DeepSeek für die Integration in die Oracle Datenbank Welt

Aufgabe

Ziel ist es mit einen OpenSource LM, Lokal installiert, die Eingabe eines Anwenders zu verstehen und in passendes SQL für eine freie Suche in einer Oracle Datenbank umzuwandeln.

Es soll zum Beispiel nach der Menge eines verfügbaren Produkts gefragt werden oder nach einen Dokument gesucht werden können.

In APEX soll über eine einzigen Prompt die ganze Datenbank abgefragt werden können.

Im ersten Schritt wird das LM noch nicht direkt in die Datenbank geladen (Stichwort Vector Search) sondern soll nur das SQL per Rest Service erzeugen. Bzw. versuchen das DB Model zu verstehen und Fragen zum Datenmodel beantworten.

Dazu benötigen wir die folgenden Komponente:

REST-Service Der Service empfängt den User-Text und sendet ihn an das Sprachmodell (LM) und lieft die SQL Query zurück

Sprachmodell (LM): Das Modell analysiert den Text, zerlegt ihn und generiert eine SQL-Abfrage basierend auf einem Metamodell (Datenmodell-Definition).

Entity Recognition (NER)-Modell Um Begriffe wie „how much“ (wie viel), „remaining“ (verbleibend) oder „inventory“ (Bestand) zu erkennen, Produkte und weitere Entitäten aus der Anwender Anfrage extrahieren muss das System die erkannte Fragestellug auf die Datenbank Welt „mappen“.

Datenmodell-Mapping: Eine Metadaten-Definition beschreibt die Struktur der Datenbank, anhand derer die SQL-Abfrage generiert wird.

Für die Implementierung wird als LM wird DeepSeek ⇒ https://huggingface.co/lmstudio-community/DeepSeek-R1-Distill-Llama-8B-GGUF verwendet.

Mehr Modelle von DeepSeek unter https://huggingface.co/deepseek-ai und https://www.deepseek.com/


DeepSeek Software bereitstellen

Modell einlesen

Model DeepSeek-R1 in in das lmstudio einlesen und aktiveren, Aufgaben dem Model beschreiben.

Zu meine Erstaunen klingen die ersten Vorschläge recht gut, auch scheint die Performance von meinen Notebook (Nvida RTX 4000 / i9 / 64GB Ram) ausreichend zu sein um mit dem Model doch recht zügig lokal arbeiten zu können.

LM auf Platte ablegen

Lm von https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Llama-8B/tree/main per GIT clonen.

mkdir C:\development\ki\model\deepseek-ai\
git lfs install
git clone https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Llama-8B

CUDA Support auf der lokalen Maschine aktiveren

Für meine RTX 4000 Nivida Karte wird im ersten Schritt der CUDA Support für Windows 11 heruntergeladen, über https://developer.nvidia.com/cuda-downloads , mehr Erklärung unter https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html / https://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html .

Installation mit den Default Einstellung durchgeführt, Wahrnung das kein Visal Studio installiert ist ignoreren, wir benötigen für Python nur die Basis Libs im ersten Schritt.

Und ich hoffe, das durch das überschreiben des aktuellen Grapikkarten Treibers mit der Version aus diesem Packet kein größere Problem auf dem Lenovo Notebook mit der RTX 4000 entsteht.

Version prüfen:

nvcc --version
 
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Wed_Jan_15_19:38:46_Pacific_Standard_Time_2025
Cuda compilation tools, release 12.8, V12.8.61
Build cuda_12.8.r12.8/compiler.35404655_0

Pfad zur CUDA Lib muss in den Windows System Pfaden hinterlegt sein!

Überhaupt mal was in Python zum Laufen bringen

Die Entwicklung findet unter Visual Code statt.

Im ersten Schritt ein Python Projekt anlegen und die Libs in die Umgebung laden. Dazu einen Prjekt Folder anlegen die Projekt Umgebung initaliseren.

C:\development\ki\oracle_prompt\.venv\Scripts> .\Activate.ps1
pip install torch torchvision torchaudio
pip install spacy pyyaml transformers
 
python -m spacy download en_core_web_sm
python -m spacy download en_core_web_sm

Ein ersten Model für den NPR mit spacy laden:

import spacy
import yaml
nlp = spacy.load("de_dep_news_trf")
import de_dep_news_trf
nlp = de_dep_news_trf.load()
doc = nlp("Wie vielen BMW Modell haben wir auf Lager")
print([(w.text, w.pos_) for w in doc])
#----
nlp = spacy.load('en_core_web_sm')
doc = nlp("Wie vielen BMW Modell haben wir auf Lager")
for ent in doc.ents:
    print(f"{ent.text} - {ent.label_}")

Ausgaben:

[('Wie', 'ADV'), ('vielen', 'DET'), ('BMW', 'PROPN'), ('Modell', 'NOUN'), ('haben', 'VERB'), ('wir', 'PRON'), ('auf', 'ADP'), ('Lager', 'NOUN')]
Wie - ORG
BMW Modell - ORG
Lager - PERSON

Noch nicht so ganz das erwartet Ergebnis …

DeepSeek laden

Nach der CUDA Installation torch mit den passenden Treibern für CUDA laden:

C:\development\ki\oracle_prompt\.venv\Scripts> .\Activate.ps1
S C:\development\ki\oracle_prompt> & c:/development/ki/oracle_prompt/.venv/Scripts/pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

pürfen ob CUDA auch gefunden wird:

import torch
 
print("CUDA available:", torch.cuda.is_available())
print("CUDA version:", torch.version.cuda)
print("GPU Name:", torch.cuda.get_device_name(0))

Ausgabe:

CUDA available: True
CUDA version: 12.1
GPU Name: NVIDIA RTX 4000 Ada Generation Laptop GPU

Das LM vom lokalen Git Repo von DeepSeek laden:

from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("C:\\development\\ki\\model\\deepseek-ai\\DeepSeek-R1-Distill-Llama-8B")
model = AutoModelForCausalLM.from_pretrained("C:\\development\\ki\\model\\deepseek-ai\\DeepSeek-R1-Distill-Llama-8B")

Der Kern der Aufgabe - Mappen eines Datenmodell auf die Anfrage eines Anwenders

Das LM beschreibt recht zügig, wie der Rest Service aufgebaut werden kann um das LM abzufragen.


Quellen

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
ki/deepseek_oracle.txt · Zuletzt geändert: 2025/02/07 15:19 von gpipperr

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki