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.5-cp314-cp314t-win_amd64.whl (167.1 kB view details)

Uploaded CPython 3.14tWindows x86-64

locvec-1.0.5-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.5-cp314-cp314t-macosx_11_0_arm64.whl (14.3 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

locvec-1.0.5-cp314-cp314-win_amd64.whl (167.1 kB view details)

Uploaded CPython 3.14Windows x86-64

locvec-1.0.5-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.5-cp314-cp314-macosx_11_0_arm64.whl (14.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

locvec-1.0.5-cp313-cp313-win_amd64.whl (163.2 kB view details)

Uploaded CPython 3.13Windows x86-64

locvec-1.0.5-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.5-cp313-cp313-macosx_11_0_arm64.whl (14.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

locvec-1.0.5-cp312-cp312-win_amd64.whl (163.2 kB view details)

Uploaded CPython 3.12Windows x86-64

locvec-1.0.5-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.5-cp312-cp312-macosx_11_0_arm64.whl (14.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

locvec-1.0.5-cp311-cp311-win_amd64.whl (163.2 kB view details)

Uploaded CPython 3.11Windows x86-64

locvec-1.0.5-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.5-cp311-cp311-macosx_11_0_arm64.whl (14.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

locvec-1.0.5-cp310-cp310-win_amd64.whl (163.2 kB view details)

Uploaded CPython 3.10Windows x86-64

locvec-1.0.5-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.5-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.5-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: locvec-1.0.5-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 167.1 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.5-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 af9c316a6b6dfb2df4cb8c2fab55c6ab04149fe6f3dbda31361a93286bfa9098
MD5 4ab42024ca57695fb701643b738b7efc
BLAKE2b-256 29d426f52944a172801b22b20328849af0477034b19a90a644d9336d071a090a

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-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.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2798ac16867eba49cb4cb43f812fccfb2c938fc16da9da54f8c9795c017eb414
MD5 6b6859a31517c500d719ab7d329e1508
BLAKE2b-256 0941b4dcb0a752ea45eccf1638cb062eb07961f32a2d5e0fc90b7be5c05b559e

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.5-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0756711d70073b2ae9a324b9f708ed6ce33cc457c50781e1d44d06e6ffe1d3f7
MD5 3b72555cc212aa4fedcd90b57d606ec5
BLAKE2b-256 3bbca4e00724359a022a3eb934033ceca44a5c92d6ec46b76b47c995c629af9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: locvec-1.0.5-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 167.1 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.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1ed640f47000788138e628dd7cdc2cb88456d6f1d22c30c462fd58b1163cebfb
MD5 6dd2bb8efe0a42fdc00a178ef4d32302
BLAKE2b-256 ddbe2e444707a683f80be46ed744ea11d24987d73ca8d9b5252629900bdacb44

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-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.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e07674613c448fafbeaa3d45df318c92a897645e90e35507e25607668b82b315
MD5 403e3ad64ce93719762feca8b2aa2563
BLAKE2b-256 3125fb2cc67c29ce6ae11daf889b014e9395ff16dfab41711481961a9e4d32ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a7139df504a21af04b1d16467355eb6b89813e402aae5d2a8aa5d88021643786
MD5 1a8dedc85730ef5ac4805dda20d8f5ae
BLAKE2b-256 b1a3fb09180f73f428aaef599640dce9849f043bd352becd1eda0ed7000846d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: locvec-1.0.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 163.2 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.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9954336d180ce349fa258e3fbcc4f877c7fe7d5dcdd0ebc19cfb8eeab4f906cb
MD5 0a8c5ab62a027f56a27960a87755b136
BLAKE2b-256 bdc7f6691a03af0b72fcbf2a7f9aad9b85103d3be5ddfa09c8ab47afe6540ac3

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-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.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9a7980034441b48e2b3d1e0406aee1c99b77e8a6e92014a79c1492a523247ee2
MD5 39d64b22520397d99a01846c40e1b495
BLAKE2b-256 482ff0be04c17ec2b933e509c4e356acf923d28f2fe9f266c3c276a733ba2b68

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 da16057e6e28a63e1d97b4d50c58a88353b640945d38767e594530e6200017e3
MD5 815badf3dfc8e62ecc592f3fca170d5c
BLAKE2b-256 11c5cb2ad2d3b4f19ac5904669e40098cf12fafdec0c7e2a5e7ec92ba0b16363

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: locvec-1.0.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 163.2 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.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6932f09c9e0aa0f79317e21f5e7104753cb50c7c70c4e8d593a99efae11eb09b
MD5 e5277b4a3a1e6b43a6e932c66d47fc44
BLAKE2b-256 d0279794a297292dc14af16d69287f396de7fea4289f777cc64bcccaefbb84d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-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.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9416adb8d3f91e0fe9b135027b17081784c441b122ca94946108c581ee1443b7
MD5 7796fb3012b7a16754f06b20b27a2458
BLAKE2b-256 8901c1942d3fb4b5a471c22f786ea411f76217ead538eb4acdd1c761ddcea36e

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1e213b9604aae633bbf3a626d715318c3c12681fd7fa22f52992cf97a2b4098e
MD5 3198a5437a36388874206fc4f13e36b7
BLAKE2b-256 f5b1022b7dc61299bec24fdc016b1d18b3cc1018d8efa51fae32f80f5df92b8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: locvec-1.0.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 163.2 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.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3605c6616ec232b1d1d2306d6a517b2b7dc748b50d601ffe0b4da4d4f0d3a041
MD5 e515ce05b46be418631ee7f45f13edcb
BLAKE2b-256 1b92c2f40b7a80b6f8471511657bff97fcc08ca609e895574b30a5ec44599676

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-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.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ed7dd2dcda70f4e1e58c5c768a017b7459893df8a46867133f0c12be8a24691d
MD5 2e183754a67649de8fab8f26a882a638
BLAKE2b-256 20be2196860258b422684a113066d7d8c6fab61af859689aed1c47f59a7b4007

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d6fac24aa89e7cf98f0b084ad49895c4b2a0c9695d46f12d5425f6d93b0b201a
MD5 2f47317190c69dce39a2f53774d5777b
BLAKE2b-256 0b0d34d3854fbcd6c2eb52a11cf2e679b5dae1c2d762c672b6293a2564fef328

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: locvec-1.0.5-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 163.2 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.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 01ba2df2f9a254438c03e68d9bc9711180ca5e338bd244d9e40e193d20294436
MD5 6eb129234349105254977c01673cb5f8
BLAKE2b-256 7a6f192be88899c6d2593530f80bf5d39e186807310c0c0b0b8232c6b5ce8b0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-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.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 30ab41184c3803e3798583bce10d3bad72fb52875e69a369771fc49e4a623334
MD5 3d1b6ea77e87ecd0ccf38c9b7ef406ec
BLAKE2b-256 c060deb78b2fbe3aeee825e38938ace855c89ae6d8156f0833a4e29d2bb6f5ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8dfaa2241f9a7881cc2a8c94c4ec02c18b178d7f4247c6c9e97f8bbe25b8ad88
MD5 a0f4b0583c444ce1765836cd80d390fa
BLAKE2b-256 2493a7c9c4bdc318720512ccd8d75c10bf33dd478334b66c08ac8ece1b7b3b64

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.5-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