PSF: Mass-regeneration complete. 53/53 high-fidelity blueprints and TDD suites established. Zero-cost Pro bridge active.

This commit is contained in:
2026-04-07 08:58:08 -04:00
parent f4a91ae747
commit 77c0dac025
58 changed files with 2154 additions and 1671 deletions

View File

@@ -18,49 +18,59 @@ Generate embeddings for text strings.
- *Provider Choice:* Support for local (Ollama) or remote (Gemini, OpenAI) providers.
- *Batching:* Efficiency through batching text (future-proof).
* Phase B: Blueprint (PROTOCOL)
:PROPERTIES:
:STATUS: SIGNED
:END:
** 1. Architectural Intent
Unified interface for neural embeddings.
** Phase B: Blueprint (PROTOCOL)
:PROPERTIES:
:STATUS: DRAFT
:END:
** 2. Semantic Interfaces
#+begin_src lisp
(defun get-embedding (text &key provider) "Acquire vector embedding for TEXT.")
#+end_src
*** 1. Architectural Intent
* Phase D: Build (Implementation)
This system aims for a flexible and extensible architecture that can accommodate different embedding providers (local or remote) while maintaining a consistent interface for the user. It also seeks to optimize for batch processing to improve throughput. The core design principle is *provider abstraction*.
#+begin_src lisp :tangle ../projects/org-skill-embedding-generator/src/embedding-generator.lisp
(defun get-embedding (text &key (provider :ollama))
"Retrieves the embedding vector for TEXT using specified PROVIDER."
(kernel-log "NEURO [Embedding] - Generating via ~a..." provider)
(case provider
(:ollama (get-embedding-ollama text))
(:gemini (get-embedding-gemini text))
(t (error "Unsupported embedding provider: ~a" provider))))
*** 2. Semantic Interfaces
(defun get-embedding-ollama (text)
(let* ((url "http://localhost:11434/api/embeddings")
(payload (cl-json:encode-json-to-string `(("model" . "mxbai-embed-large") ("prompt" . ,text))))
(response (dex:post url :content payload :headers '(("Content-Type" . "application/json")))))
(cdr (assoc :embedding (cl-json:decode-json-from-string response)))))
#+BEGIN_SRC lisp
;;; Primary Function: Generate Embeddings
;;; Input: A list of strings, and provider configuration
;;; Output: A list of embedding vectors (lists of floats).
(defun get-embedding-gemini (text)
(let* ((api-key (getf (org-agent:get-credentials :gemini) :api-key))
(url (format nil "https://generativelanguage.googleapis.com/v1beta/models/embedding-001:embedContent?key=~a" api-key))
(payload (cl-json:encode-json-to-string `(("content" . (("parts" . ((("text" . ,text))))))))))
(let ((response (dex:post url :content payload :headers '(("Content-Type" . "application/json")))))
(cdr (assoc :values (cdr (assoc :embedding (cl-json:decode-json-from-string response))))))))
#+end_src
(defun generate-embeddings (texts provider-config)
"""Generates embeddings for a list of texts using the specified provider.""")
;;; Provider Configuration Structure
;;; This plist defines the provider to use, and any necessary credentials or parameters.
;;; Example: Local Ollama provider
;;; (:provider :ollama :model "mistralai/Mistral-7B-Instruct-v0.2")
;;; Example: Remote Gemini provider
;;; (:provider :gemini :api-key "YOUR_API_KEY" :model "gemini-1.5-pro")
;;; Example: Remote OpenAI provider.
;;; (:provider :openai :api-key "YOUR_API_KEY" :model "text-embedding-ada-002")
;;; Sub-Function: (Abstract) Provider-Specific Embedding Generation
;;; This function is implemented differently for each provider.
(defgeneric generate-embeddings-from-provider (texts provider-config))
;;; Example implementation for :ollama provider
(defmethod generate-embeddings-from-provider (texts (provider-config (eql (getf provider-config :provider :ollama))))
"""Generates embeddings using a local Ollama server.""")
;;; Example implementation for :gemini provider
(defmethod generate-embeddings-from-provider (texts (provider-config (eql (getf provider-config :provider :gemini))))
"""Generates embeddings using the Gemini API.""")
;;; Example implementation for :openai provider
(defmethod generate-embeddings-from-provider (texts (provider-config (eql (getf provider-config :provider :openai))))
"""Generates embeddings using the OpenAI API.""")
#+END_SRC
* Registration
#+begin_src lisp
(defskill :skill-embedding-generator
:priority 50
:trigger (lambda (context) nil)
:neuro (lambda (context) nil)
:symbolic (lambda (action context) action))
#+end_src