Difference between revisions of "OSGeo-Knowledge-Embedding-Server"

From OSGeo
Jump to navigation Jump to search
 
Line 1: Line 1:
OSGeo-Knowledge-Embedding-Server =
+
= OSGeo-Knowledge-Embedding-Server =
  
BGE-M3 embedding server for semantic search, running on [[Gallery_Container]] when active.
+
BGE-M3 embedding server for semantic search, running on [[Gallery_Container]].
  
It provides local embeddings for services such as [[Osgeo-library]] and other OSGeo AI/search tooling.
+
It provides local embeddings for [[Osgeo-library]] and other OSGeo AI/search tooling.
  
 
== Model ==
 
== Model ==
Line 11: Line 11:
 
<pre>
 
<pre>
 
/home/ominiverdi/models/bge-m3-Q8_0.gguf
 
/home/ominiverdi/models/bge-m3-Q8_0.gguf
</pre>
 
 
Model size:
 
 
<pre>
 
606 MB
 
 
</pre>
 
</pre>
  
Line 24: Line 18:
 
* Upstream: BAAI
 
* Upstream: BAAI
 
* Quantization: Q8_0
 
* Quantization: Q8_0
 +
* File size: 606 MB
 
* Vector size: 1024 dimensions
 
* Vector size: 1024 dimensions
 
* Multilingual: supports 100+ languages
 
* Multilingual: supports 100+ languages
Line 29: Line 24:
 
== Endpoint ==
 
== Endpoint ==
  
Configured by [[Osgeo-library]] as:
+
The service listens on localhost only:
  
 
<pre>
 
<pre>
Line 35: Line 30:
 
</pre>
 
</pre>
  
Verified config files:
+
Configured by [[Osgeo-library]] in:
  
 
<pre>
 
<pre>
 +
/home/ominiverdi/github/osgeo-library/config.toml
 
/home/ominiverdi/github/osgeo-library/config.example.toml
 
/home/ominiverdi/github/osgeo-library/config.example.toml
/home/ominiverdi/github/osgeo-library/config.toml
 
 
</pre>
 
</pre>
  
The endpoint is intended to listen on localhost only.
+
== Runtime ==
 +
 
 +
The service runs through llama.cpp / <code>llama-server</code>.
 +
 
 +
Startup script:
 +
 
 +
<pre>
 +
/home/ominiverdi/github/osgeo-library/servers/bge-m3-cpu.sh
 +
</pre>
 +
 
 +
The script uses:
 +
 
 +
<pre>
 +
/home/ominiverdi/llama.cpp/build/bin/llama-server
 +
/home/ominiverdi/models/bge-m3-Q8_0.gguf
 +
</pre>
 +
 
 +
It binds to:
 +
 
 +
<pre>
 +
127.0.0.1:8094
 +
</pre>
 +
 
 +
== Automatic startup ==
 +
 
 +
The service is started at reboot from the <code>ominiverdi</code> crontab:
 +
 
 +
<pre>
 +
@reboot cd ~/github/osgeo-library && nohup ./servers/bge-m3-cpu.sh >> ~/logs/bge-m3-cpu.log 2>&1 </dev/null
 +
</pre>
 +
 
 +
Related API startup entry:
  
== Runtime ==
+
<pre>
 +
@reboot ~/github/osgeo-library/servers/start-server.sh >> ~/logs/osgeo-library.log 2>&1
 +
</pre>
  
The service is expected to run through llama.cpp / <code>llama-server</code>.
+
== Operations ==
  
 
Check listener status:
 
Check listener status:
Line 52: Line 80:
 
<pre>
 
<pre>
 
ss -ltnp | grep 8094
 
ss -ltnp | grep 8094
 +
</pre>
 +
 +
Expected listener:
 +
 +
<pre>
 +
127.0.0.1:8094
 
</pre>
 
</pre>
  
Line 57: Line 91:
  
 
<pre>
 
<pre>
pgrep -af "llama|bge|8094|embedding"
+
pgrep -af "llama-server.*8094|bge-m3"
 +
</pre>
 +
 
 +
Check health:
 +
 
 +
<pre>
 +
curl http://127.0.0.1:8094/health
 +
</pre>
 +
 
 +
Expected result:
 +
 
 +
<pre>
 +
{"status":"ok"}
 +
</pre>
 +
 
 +
Check from [[Osgeo-library]]:
 +
 
 +
<pre>
 +
cd /home/ominiverdi/github/osgeo-library
 +
/home/ominiverdi/github/osgeo-library/.venv/bin/python - <<'PY'
 +
import asyncio
 +
from doclibrary.servers.mcp import get_library_status
 +
async def main():
 +
    print(await get_library_status())
 +
asyncio.run(main())
 +
PY
 +
</pre>
 +
 
 +
Expected status includes:
 +
 
 +
<pre>
 +
Embedding server: OK
 +
Database: OK
 +
</pre>
 +
 
 +
View logs:
 +
 
 +
<pre>
 +
tail -f /home/ominiverdi/logs/bge-m3-cpu.log
 
</pre>
 
</pre>
  
At the time of the last check, the model file and client configuration were present, but no active listener on port <code>8094</code> was observed.
+
Start manually:
 +
 
 +
<pre>
 +
cd /home/ominiverdi/github/osgeo-library
 +
nohup ./servers/bge-m3-cpu.sh >> ~/logs/bge-m3-cpu.log 2>&1 </dev/null &
 +
</pre>
 +
 
 +
Stop manually:
 +
 
 +
<pre>
 +
pkill -f "llama-server.*8094"
 +
</pre>
  
 
== Consumers ==
 
== Consumers ==

Latest revision as of 11:15, 5 June 2026

OSGeo-Knowledge-Embedding-Server

BGE-M3 embedding server for semantic search, running on Gallery_Container.

It provides local embeddings for Osgeo-library and other OSGeo AI/search tooling.

Model

Verified model file on osgeo7-gallery:

/home/ominiverdi/models/bge-m3-Q8_0.gguf

Model details:

  • Model family: BGE-M3
  • Upstream: BAAI
  • Quantization: Q8_0
  • File size: 606 MB
  • Vector size: 1024 dimensions
  • Multilingual: supports 100+ languages

Endpoint

The service listens on localhost only:

http://localhost:8094/embedding

Configured by Osgeo-library in:

/home/ominiverdi/github/osgeo-library/config.toml
/home/ominiverdi/github/osgeo-library/config.example.toml

Runtime

The service runs through llama.cpp / llama-server.

Startup script:

/home/ominiverdi/github/osgeo-library/servers/bge-m3-cpu.sh

The script uses:

/home/ominiverdi/llama.cpp/build/bin/llama-server
/home/ominiverdi/models/bge-m3-Q8_0.gguf

It binds to:

127.0.0.1:8094

Automatic startup

The service is started at reboot from the ominiverdi crontab:

@reboot cd ~/github/osgeo-library && nohup ./servers/bge-m3-cpu.sh >> ~/logs/bge-m3-cpu.log 2>&1 </dev/null

Related API startup entry:

@reboot ~/github/osgeo-library/servers/start-server.sh >> ~/logs/osgeo-library.log 2>&1

Operations

Check listener status:

ss -ltnp | grep 8094

Expected listener:

127.0.0.1:8094

Check process status:

pgrep -af "llama-server.*8094|bge-m3"

Check health:

curl http://127.0.0.1:8094/health

Expected result:

{"status":"ok"}

Check from Osgeo-library:

cd /home/ominiverdi/github/osgeo-library
/home/ominiverdi/github/osgeo-library/.venv/bin/python - <<'PY'
import asyncio
from doclibrary.servers.mcp import get_library_status
async def main():
    print(await get_library_status())
asyncio.run(main())
PY

Expected status includes:

Embedding server: OK
Database: OK

View logs:

tail -f /home/ominiverdi/logs/bge-m3-cpu.log

Start manually:

cd /home/ominiverdi/github/osgeo-library
nohup ./servers/bge-m3-cpu.sh >> ~/logs/bge-m3-cpu.log 2>&1 </dev/null &

Stop manually:

pkill -f "llama-server.*8094"

Consumers

Contact: ominiverdi, Lorenzo Becchi, or SAC channel.