Skip to main content

High-performance CUDA-accelerated vector retrieval core.

Project description

LocVec — Local Vector Retrieval Engine

High-speed, hardware-aware vector search for local RAG on consumer-grade GPUs — no cloud dependency required.


Overview

LocVec is a hardware-aware vector database and retrieval library written in Python with custom CUDA backends. It is designed for low-latency Retrieval-Augmented Generation (RAG) on consumer-grade hardware with limited VRAM.

By implementing a dynamic memory handoff system and optimized clustering algorithms, LocVec enables high-speed search across large document sets — entirely on-device.


Features

  • Custom CUDA Kernels — Accelerated matrix operations for vector similarity search.
  • Dynamic VRAM Handoff — Warm Loading cycle flushes the encoder after retrieval, freeing VRAM for LLM inference.
  • IVF Indexing — Reduces search complexity from O(N) to O(N/K) via K-Means clustered Voronoi partitioning with dynamic K calculation.
  • Streaming LLM Inference — Token-by-token generation from local models (e.g., Phi-3 via Ollama).
  • PDF Ingestion — Built-in sharding and indexing pipeline for document corpora.
  • No Cloud Required — Fully local; no API calls, no data leaving your machine.

System Requirements

  • NVIDIA GPU (CUDA-capable)
  • NVIDIA CUDA Toolkit — version matching your GPU drivers
  • Python 3.10+

Verify your CUDA installation:

nvcc --version

If the command is not recognized, add the CUDA bin directory to your system PATH.


Installation

# Clone the repository
git clone https://github.com/rAdvirtua/locvec.git
cd locvec

# Install required dependencies
pip install -r requirements.txt

# Compile and install the library (editable mode)
pip install -e .

Note: Editable mode (-e) is required to trigger local compilation of the C/CUDA extensions via the setup.py build script.


Setting Up a Local LLM with Ollama

LocVec uses Ollama to run LLMs locally. Follow these steps to get a model running before querying with LocVec.

1. Install Ollama

Download and install Ollama for your platform from ollama.com/download, or via the terminal:

# macOS / Linux
curl -fsSL https://ollama.com/install.sh | sh

For Windows, use the installer from the website.

2. Pull a Model

Once Ollama is installed, pull a model. Phi-3 is recommended for low-VRAM setups:

# Lightweight — good for 4–6 GB VRAM
ollama pull phi3

# Alternatively, for higher quality output
ollama pull llama3
ollama pull mistral

Browse the full model library at ollama.com/library.

3. Verify the Model is Running

ollama run phi3

You should see an interactive prompt. Type /bye to exit. Ollama runs as a background service automatically, so no manual server start is needed before using LocVec.

Tip: Match your model choice to available VRAM. On GPUs with less than 6 GB, stick to phi3 or gemma:2b to avoid OOM errors during the inference phase.


Usage

The usage example requires PyMuPDF for PDF text extraction. Install it with:

pip install pymupdf
import fitz
import time
import os
from locvec import LocalVec

def extract_and_chunk_pdf(file_path, chunk_size=300):
    text = ""
    with fitz.open(file_path) as doc:
        for page in doc:
            text += page.get_text()

    return [text[i:i + chunk_size] for i in range(0, len(text), chunk_size)]

# Explicitly initialize the engine with the preferred model
engine = LocalVec(model_name='all-MiniLM-L6-v2')

pdf_path = "research_paper.pdf"
chunks = extract_and_chunk_pdf(pdf_path)

print(f"Extracted {len(chunks)} shards from {pdf_path}")
engine.build_full_index(chunks)

query = "Summarize the key findings of this document."
start_time = time.perf_counter()

idx, context = engine.search(query)

if idx < 0:
    print(f"Error: {context}")
    exit()

latency_ms = (time.perf_counter() - start_time) * 1000
print(f"Search completed in {latency_ms:.2f}ms")

engine.offload_encoder()

print("\nAI Response:")
for token in engine.query_llm_stream("phi3", query, context):
    print(token, end="", flush=True)
print("\n")

PDF Chat Session

An interactive chat session over a PDF document. Maintains a short history window and enforces concise responses via a strict token limit.

import os
import json
import fitz
import urllib.request
from locvec import LocalVec

class PDFChatSession:
    def __init__(self, pdf_path, db_name="chat_store"):
        self.pdf_path = pdf_path
        self.lv = LocalVec(db_name=db_name)
        self.history = []
        self.llm_endpoint = "http://localhost:11434/api/generate"
        self.model = "phi3"

    def ingest_pdf(self, shard_size=600):
        doc = fitz.open(self.pdf_path)
        full_text = "".join([page.get_text().replace('\n', ' ') for page in doc])
        shards = [full_text[i:i + shard_size] for i in range(0, len(full_text), shard_size)]
        self.lv.build_full_index(shards)

    def _call_llm_stream(self, prompt):
        payload = {
            "model": self.model,
            "prompt": prompt,
            "stream": True,
            "options": {"temperature": 0.2, "num_ctx": 4096, "num_predict": 150}
        }
        req = urllib.request.Request(
            self.llm_endpoint,
            data=json.dumps(payload).encode('utf-8'),
            headers={'Content-Type': 'application/json'}
        )
        with urllib.request.urlopen(req) as response:
            full_response = ""
            for line in response:
                if line:
                    chunk = json.loads(line.decode('utf-8'))
                    token = chunk.get('response', '')
                    full_response += token
                    print(token, end="", flush=True)
                    if chunk.get('done'):
                        break
            return full_response

    def start_chat(self):
        while True:
            query = input("\nUser: ").strip()
            if query.lower() in ['exit', 'quit']:
                break

            _, context_shards = self.lv.search(query, top_k=2)
            history_str = "\n".join([f"Q: {h['q']}\nA: {h['a']}" for h in self.history[-1:]])

            full_prompt = (
                f"SYSTEM: You are a concise technical assistant. "
                f"Answer using ONLY the context provided. "
                f"STRICT RULE: Your response MUST be 3-4 lines maximum.\n\n"
                f"CONTEXT: {context_shards}\n\n"
                f"HISTORY: {history_str}\n\n"
                f"USER QUERY: {query}\n\n"
                f"CONCISE ANSWER:"
            )
            print("\nAI: ", end="")
            answer = self._call_llm_stream(full_prompt)
            print()
            self.history.append({"q": query, "a": answer})

if __name__ == "__main__":
    PDF_FILE = "research_paper.pdf"
    session = PDFChatSession(PDF_FILE)
    session.ingest_pdf()
    session.start_chat()

IVF vs. Brute-Force Benchmark

Compares LocVec's IVF-Voronoi search against a GPU flat (brute-force) baseline at scale. Useful for validating speedup on your specific hardware.

import time
import gc
import fitz
import random
import numpy as np
import torch
import json
import urllib.request
from locvec import LocalVec

SOURCE_PDF = "research_paper.pdf"
QUERY = "What is the specific methodology used in this paper?"
TARGET_SHARDS = 200000
OLLAMA_MODEL = "phi3"

def prepare_corpus(file_path, total_shards):
    doc = fitz.open(file_path)
    base_text = [p.get_text().replace('\n', ' ') for p in doc]
    multiplier = (total_shards // len(base_text)) + 1
    corpus = []
    for i in range(multiplier):
        for shard in base_text:
            if len(corpus) < total_shards:
                corpus.append(f"{shard} [id_{i}]")
    random.seed(42)
    random.shuffle(corpus)
    return corpus

def stream_inference(query, context):
    payload = {
        "model": OLLAMA_MODEL,
        "prompt": f"Context: {context}\n\nQuery: {query}\n\nTechnical Answer:",
        "stream": True,
        "options": {"temperature": 0.1, "num_predict": 350}
    }
    req = urllib.request.Request(
        "http://localhost:11434/api/generate",
        data=json.dumps(payload).encode('utf-8'),
        headers={'Content-Type': 'application/json'}
    )
    with urllib.request.urlopen(req) as response:
        for line in response:
            if line:
                chunk = json.loads(line.decode('utf-8'))
                yield chunk.get('response', '')
                if chunk.get('done'):
                    break

if __name__ == "__main__":
    corpus = prepare_corpus(SOURCE_PDF, TARGET_SHARDS)

    lv = LocalVec(db_name="benchmark_final")
    lv.build_full_index(corpus)

    time.sleep(20)  # Thermal recovery for laptop hardware

    embeddings_path = f"{lv.db_prefix}_offline_embeddings.bin"
    raw_data = np.fromfile(embeddings_path, dtype=np.float32).reshape(-1, lv.dims)
    all_vectors_gpu = torch.from_numpy(raw_data).to('cuda').half()
    q_vec_gpu = torch.from_numpy(lv.encoder.encode(QUERY)).to('cuda').half()

    # GPU Brute-Force
    torch.cuda.synchronize()
    _ = torch.norm(all_vectors_gpu[:100] - q_vec_gpu, dim=1)
    t0 = time.perf_counter()
    dist = torch.norm(all_vectors_gpu - q_vec_gpu, dim=1)
    flat_idx = torch.argmin(dist).item()
    torch.cuda.synchronize()
    latency_flat = (time.perf_counter() - t0) * 1000
    flat_context = corpus[flat_idx]

    # LocVec IVF
    t1 = time.perf_counter()
    lv_idx, lv_context = lv.search(QUERY, top_k=4)
    latency_lv = (time.perf_counter() - t1) * 1000

    peak_vram = torch.cuda.max_memory_allocated() / (1024**2)
    lv.offload_encoder()

    del all_vectors_gpu
    gc.collect()
    torch.cuda.empty_cache()

    speedup = latency_flat / latency_lv
    print(f"Brute-Force: {latency_flat:.2f}ms | LocVec IVF: {latency_lv:.2f}ms | Speedup: {speedup:.2f}x | Peak VRAM: {peak_vram:.2f}MB")

    for token in stream_inference(QUERY, flat_context):
        print(token, end="", flush=True)
    print()

    for token in stream_inference(QUERY, lv_context):
        print(token, end="", flush=True)
    print()

User API Reference

To use the vector engine in your own scripts, import the main class:

from locvec import LocalVec

LocalVec(model_name='all-MiniLM-L6-v2')

Initializes the vector engine and loads the embedding model into memory.

  • model_name (str, optional): Specify a different SentenceTransformers model from HuggingFace. Defaults to a fast, lightweight 384-dimension model ('all-MiniLM-L6-v2').

engine.build_full_index(texts)

Ingests a list of text shards and builds the optimized vector index on your GPU. It automatically calculates the best cluster distribution for your dataset size.

  • texts (list of str): A list of strings (e.g., your chunked PDF pages or text documents).

engine.search(query_text)

Performs a high-speed, hardware-accelerated vector search against your indexed documents to find the most relevant context.

  • query_text (str): The question or prompt you want to search for.
  • Returns (tuple): (idx, context) — The integer ID of the best-matching chunk and the actual text string of that chunk.

engine.offload_encoder()

Flushes the embedding model from your GPU's VRAM. Always call this before passing the retrieved context to a Local LLM. This guarantees your VRAM is completely free for generation, preventing out-of-memory crashes on consumer cards (4GB/6GB).


engine.query_llm_stream(model, query, context)

Sends the user's query alongside the retrieved context to your local Ollama instance, returning a stream of the response.

  • model (str): The name of the Ollama model to use (e.g., "phi3" or "llama3").
  • query (str): The user's original question.
  • context (str): The text payload returned by the engine.search() method.
  • Returns (generator): Yields individual string tokens for real-time console or UI streaming.

How It Works

CUDA Backend & Memory Management

Most local RAG implementations fail on consumer hardware because the embedding model and the LLM compete for the same VRAM pool. LocVec solves this with a two-phase lifecycle:

  1. Retrieval Phase — Custom CUDA kernels handle vector similarity computations.
  2. Warm Loading / VRAM Handoff — The encoder is flushed from GPU memory immediately after retrieval, clearing space for LLM inference and preventing Out-of-Memory (OOM) errors.

IVF Indexing

LocVec transitions search complexity from linear to clustered using Inverted File Indexing (IVF):

Step Description
Clustering K-Means partitions the vector space into K Voronoi cells dynamically based on dataset size.
Coarse Search Query is matched to the nearest centroid.
Fine Search k-NN search is performed only within the relevant cluster.
Complexity Reduced from O(N) → O(N/K).

Project Structure

locvec/
├── src/
│   ├── cuda/        # Custom CUDA kernels (k-means training, IVF search)
│   ├── bridge/      # C wrappers interfacing Python with CUDA memory management
│   └── locvec/      # Core Python library, CTypes bindings, and high-level API
├── setup.py         # Build configuration for C/CUDA extensions
├── testcase.py      # Reference implementation for PDF ingestion and search
└── README.md        # Documentation

License

See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

locvec-1.0.6-cp314-cp314t-win_amd64.whl (167.2 kB view details)

Uploaded CPython 3.14tWindows x86-64

locvec-1.0.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (15.3 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

locvec-1.0.6-cp314-cp314t-macosx_11_0_arm64.whl (14.3 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

locvec-1.0.6-cp314-cp314-win_amd64.whl (167.2 kB view details)

Uploaded CPython 3.14Windows x86-64

locvec-1.0.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (15.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

locvec-1.0.6-cp314-cp314-macosx_11_0_arm64.whl (14.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

locvec-1.0.6-cp313-cp313-win_amd64.whl (163.3 kB view details)

Uploaded CPython 3.13Windows x86-64

locvec-1.0.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (15.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

locvec-1.0.6-cp313-cp313-macosx_11_0_arm64.whl (14.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

locvec-1.0.6-cp312-cp312-win_amd64.whl (163.3 kB view details)

Uploaded CPython 3.12Windows x86-64

locvec-1.0.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (15.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

locvec-1.0.6-cp312-cp312-macosx_11_0_arm64.whl (14.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

locvec-1.0.6-cp311-cp311-win_amd64.whl (163.3 kB view details)

Uploaded CPython 3.11Windows x86-64

locvec-1.0.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (15.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

locvec-1.0.6-cp311-cp311-macosx_11_0_arm64.whl (14.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

locvec-1.0.6-cp310-cp310-win_amd64.whl (163.3 kB view details)

Uploaded CPython 3.10Windows x86-64

locvec-1.0.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (15.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

locvec-1.0.6-cp310-cp310-macosx_11_0_arm64.whl (14.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file locvec-1.0.6-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: locvec-1.0.6-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 167.2 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for locvec-1.0.6-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 1121ff7d9c6398263c4c0e529da7068e0f2fd9221b3e70b3911dda2dfc42e554
MD5 92eb3397cd1eb6a87d82b54313049de8
BLAKE2b-256 26164b4a2b7af0f375970964c0febe1db3b2d359b5c40f1c85f4df31a0e3119c

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp314-cp314t-win_amd64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for locvec-1.0.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e6a47036e2f3670af818ef59d14060b13fdff3117f9706eea8137c89d1e8bd24
MD5 5dd8a5e2e561294adfd289d5e1db2d89
BLAKE2b-256 cd767e635ea7f8cb9055460f5f298f759bbd18772aedcfb9417063c06e1b49dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.6-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 91c53ce5a313f26ee24c904667d0078f2260b2e019bc189aece86adbdf6ef2ce
MD5 3fbd5207924d7218bb4e11d46341fecd
BLAKE2b-256 5e03ea79302a995f795344d22510e7104216bb650ab56d7acc1c17bf53154322

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: locvec-1.0.6-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 167.2 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for locvec-1.0.6-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e3656f6763f8e00402d980fdfe5ffcc56dcaef76bf4f3919775f78c88fbb9f0b
MD5 664a0a63556b29e3ce32d4ad472f7da2
BLAKE2b-256 155b53ba864046218e7a2f85771cba1fb8b05faed04838cc673c9edbbb8283d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp314-cp314-win_amd64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for locvec-1.0.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 771ba36d421ca650bc95e6b98ed4c0b901e59282761b6ea255374a39845e1ea5
MD5 33c974a272e40f990213e359ccb82884
BLAKE2b-256 d30105255cd1996b862fbd56382ba77a8336ae75d4d383256436b248f977a885

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.6-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 327f46212b25275c9af5a4e57cd2e8dcccb4d97a7a3e3096d83b28d5b2e9e6bc
MD5 650699dc1ad4661063f57d51782ca1f2
BLAKE2b-256 34e1bb50890c10a09e739d8a7c18d0a39644478770e56f5684a2c22087fa4b65

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: locvec-1.0.6-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 163.3 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for locvec-1.0.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bd63a40340dfe811ace4c3a0ae1ffcc83216eda090d9067de2085dc4a92d5f51
MD5 1a21bf5b48b8e11be1784ea82f5ea37a
BLAKE2b-256 86dff94cb9e29923ac9943d8b2543094e2302707b308e25f5aeff06b29217aca

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp313-cp313-win_amd64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for locvec-1.0.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3040496ffa00fcc01d9a4ae6b8cfcb8eeb3ffe27c7087c40d11c3ff83d70ff99
MD5 6ae97c2c13905e100c4fc2f6a90c8149
BLAKE2b-256 fc42753860444d28a3b985537b08dddd4ddcfd1f767329684170fb1c121db0ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 adca5ceb12d5962e3cfdd1125708768a2a72147ed0b24c6d104e446bf3c3c38d
MD5 6a2ea4b1873db91627093b7c3a12e9de
BLAKE2b-256 71ea6c0ab360271dfac5e9f7ed79380bbf872a1c39b270ac0abd12e24b341926

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: locvec-1.0.6-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 163.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for locvec-1.0.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4d894874d932128ea94435b1ac6efa9a2aa939fa366501354fc0e46526c6fcd5
MD5 b36a082fb9954e8c272ff6de8d54e0cc
BLAKE2b-256 9a6f6ebc33e22470fae84c0e7f96b5c5c036be852e2810571166ba185341de6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp312-cp312-win_amd64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for locvec-1.0.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b3a8c376c83c95aeb36741f9c26e1630818d898c1397c58cdd1481ce172d9f47
MD5 7e3dfb26c8ad035cf354165220ca31b0
BLAKE2b-256 b41cdb3198ee62ec5203c700487cb7e3373a1125e160535a66217ec116006f9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2f2765b887c196950fc2c2ef663a3246673258425862a28ef01d59c72999d25d
MD5 78eb1a41a6ef318c77ccc0c40686c509
BLAKE2b-256 8f7bd87568e9d376e5f75cc182e51101bd463ad3d0394faf3ca653f1aafe0f9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: locvec-1.0.6-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 163.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for locvec-1.0.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 62366e1755088475c605f1691a43eb75811f32661e1776e741fa84dc3b6c24c2
MD5 dc609e4338e8462bc60240c4be708e9e
BLAKE2b-256 ca0475855d77f3849838f2df5528bbe4f65f4b79c45bddd21fafbe1e0c0cffd8

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp311-cp311-win_amd64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for locvec-1.0.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6e4037df3b8a855c4b87c4a3be51911a2a4b7947772ed216447616b135ef7fad
MD5 12db5ed6c00a40414dfcf595fd9fbb9b
BLAKE2b-256 07b1980797e20f2c705733e998552e3e4c3d5032427a5bf9b3bbee8730ba4ffd

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 003671e151c3a6a05d7d448deef3f17999818b09381e7827fd65e5e8027151f7
MD5 70096df9166a08893cf189c3caf9a458
BLAKE2b-256 980485f8b5edd82f529d93f65f5d65f2947d3b6cbb6a0cef471dff4d78ada2f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: locvec-1.0.6-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 163.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for locvec-1.0.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9a610c720fed5976dd17d6543685413b770d2a229c5e7a8e18adb530d20e8eca
MD5 76d5f7c0aecf6f9dd4c87218717b4f37
BLAKE2b-256 fe6cbc588b6706bc06398ad08d43511eef355925d74e68283704b4e1cc5bfccf

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp310-cp310-win_amd64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for locvec-1.0.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6148f196618752a82403a42e243551b2d2a41c2d74decdfe0b0b9a42eb712e93
MD5 1d9e39e1a5292bfe6a6cb81aecf75210
BLAKE2b-256 591e6d5d5ec87f4ee444c57e579ca511fc42fbea6ae5820caf42199ca73ba634

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locvec-1.0.6-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 db6e915b4429b20313629408a4d777e708ca804f92843d53258ce37d636d62fa
MD5 feb4262f8a0e313a7f60a316d51a4a7a
BLAKE2b-256 27300e8ed3c9b433dba4804a9f3cac0d84da9f272647d68ff720071e8c05f352

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.6-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on rAdvirtua/locvec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page