branch: externals/elisa
commit 960cfc940c42ce8a1e11951419ce0a4bfb2b9b4f
Author: Sergey Kostyaev <kostyaev.serg...@wb.ru>
Commit: Sergey Kostyaev <kostyaev.serg...@wb.ru>

    Enable custom batch size for embeddings calculation
    
    Added a new customizable variable `elisa-batch-size` to allow users to
    set the batch size for embeddings calculations. Modified the
    `elisa-embeddings` function to use this batch size when dividing
    chunks into batches for processing.
---
 elisa.el | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/elisa.el b/elisa.el
index 1dd57a9a96..afab3c1546 100644
--- a/elisa.el
+++ b/elisa.el
@@ -1,6 +1,6 @@
 ;;; elisa.el --- Emacs Lisp Information System Assistant -*- lexical-binding: 
t -*-
 
-;; Copyright (C) 2024  Free Software Foundation, Inc.
+;; Copyright (C) 2024, 2025 Free Software Foundation, Inc.
 
 ;; Author: Sergey Kostyaev <sskosty...@gmail.com>
 ;; URL: http://github.com/s-kostyaev/elisa
@@ -279,6 +279,10 @@ If set, all quotes with similarity less than threshold 
will be filtered out."
   "Enable batch embeddings if supported."
   :type 'boolean)
 
+(defcustom elisa-batch-size 300
+  "Batch size to send to provider during batch embeddings calculation."
+  :type 'integer)
+
 (defun elisa-supported-complex-document-p (path)
   "Check if PATH contain supported complex document."
   (cl-find (file-name-extension path)
@@ -473,7 +477,8 @@ Return list of vectors."
   (let ((provider elisa-embeddings-provider))
     (if (and elisa-batch-embeddings-enabled
             (member 'embeddings-batch (llm-capabilities provider)))
-       (llm-batch-embeddings provider chunks)
+       (let ((batches (seq-partition chunks elisa-batch-size)))
+         (flatten-list (mapcar (lambda (batch) (llm-batch-embeddings provider 
batch)) batches)))
       (mapcar (lambda (chunk) (llm-embedding provider chunk)) chunks))))
 
 (defun elisa-parse-info-manual (name collection-name)
@@ -1265,6 +1270,7 @@ Call ON-DONE callback with result as an argument after 
FUNC evaluation done."
                    ,(async-inject-variables "elisa-tar-executable")
                    ,(async-inject-variables "elisa-prompt-rewriting-enabled")
                    ,(async-inject-variables "elisa-batch-embeddings-enabled")
+                   ,(async-inject-variables "elisa-batch-size")
                    ,(async-inject-variables "elisa-rewrite-prompt-template")
                    ,(async-inject-variables "elisa-semantic-split-function")
                    ,(async-inject-variables 
"elisa-webpage-extraction-function")

Reply via email to