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.3-cp312-cp312-win_amd64.whl (24.5 kB view details)

Uploaded CPython 3.12Windows x86-64

locvec-1.0.3-cp312-cp312-win32.whl (24.5 kB view details)

Uploaded CPython 3.12Windows x86

locvec-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

locvec-1.0.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (15.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

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

Uploaded CPython 3.12macOS 11.0+ ARM64

locvec-1.0.3-cp311-cp311-win_amd64.whl (24.5 kB view details)

Uploaded CPython 3.11Windows x86-64

locvec-1.0.3-cp311-cp311-win32.whl (24.5 kB view details)

Uploaded CPython 3.11Windows x86

locvec-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

locvec-1.0.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (15.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

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

Uploaded CPython 3.11macOS 11.0+ ARM64

locvec-1.0.3-cp310-cp310-win_amd64.whl (24.5 kB view details)

Uploaded CPython 3.10Windows x86-64

locvec-1.0.3-cp310-cp310-win32.whl (24.5 kB view details)

Uploaded CPython 3.10Windows x86

locvec-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

locvec-1.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (15.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

locvec-1.0.3-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.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: locvec-1.0.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 24.5 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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 67025e3e76359cb090224e1d3f96f2034f940e3a940f42d853871e7d5b67e380
MD5 b52984b7057fbe9c6d5a65eb9b7ca973
BLAKE2b-256 c1daa6fe6fe551d236c7d97ced606e3185dc2cdf2f2a17a468cbee344b4838e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.3-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.3-cp312-cp312-win32.whl.

File metadata

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

File hashes

Hashes for locvec-1.0.3-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 6b49021539a75536e848f83f0b5dbd52a151d30c8d5e61dcc1461a5040974890
MD5 6fc967d7fad957f7b050ace3b0a649a8
BLAKE2b-256 464a7af58a0065404ad7ba6288b39f8f2576cde5281abd472b67c91f03f03859

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.3-cp312-cp312-win32.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.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for locvec-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 92aad277914977f654d88cfbe0b7f72c59545dd134875ccd0ca056cb16fe5a8c
MD5 b20eb864a30104026355556f61b955ed
BLAKE2b-256 a076503a43fe10053661140220a39005461a1a4753cbd82ed2da8c774cf3a2c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_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.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for locvec-1.0.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a88a14dfe5e0de317589e8cbd278698ed2df67acd38095fbbdfb4381f32b18f9
MD5 ee639bc05f3cdb1213f2f2213b1ea939
BLAKE2b-256 e701ef4f080d108ea3ef07d766bb4a28fbdbb42e293379cd3134705987aca146

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.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.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 41e2a66c71fb409c06dfdff3bd4e0afeae5728417f8a984e70d6f1772e17f08e
MD5 280ee3fcedd3cca4d706d1abe715eef5
BLAKE2b-256 68123e188ae9fd597cafd36f25a5843249b5a2bffcf9e33417cdfabf07148248

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: locvec-1.0.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 24.5 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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1e8a5ed7ab3b7ca02361788abe4a14a9311f56d70a76930e53ab6bad1c4f5cba
MD5 a7e1aabb84372cebb748e2f176aef0e1
BLAKE2b-256 19daf9d84b3452ab9a56eec1a79a714ef94871de2d250f2475d9153d4b0e302b

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.3-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.3-cp311-cp311-win32.whl.

File metadata

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

File hashes

Hashes for locvec-1.0.3-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 805eec53a32ecfb932868e6d11c75a7a699fbd64139dbf8f77cac4cd150dc965
MD5 d158abf427f843ca6dfcd6db8a6be219
BLAKE2b-256 621972ba898937af090a5eee872e0a4515d828e777600bd92bceb869cf37205e

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.3-cp311-cp311-win32.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.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for locvec-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 afa9fdc583e4fe8722e50bf99dc52bd8b959f90fad69bf5e30e71722c3739da6
MD5 f3203170953a10fda51b4c71d031a836
BLAKE2b-256 8a0ee48af864b8a5581b8a22be80dc8b037c4752b993e8f6cdb80ef2c6fbd84c

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_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.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for locvec-1.0.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3a82450de65fb6c3ca4bc60f9e7747a49979631a5c65c54ad86f1bae3a30ea7a
MD5 f44ccc048e6e3dc89ee9d72572b39bec
BLAKE2b-256 1f3ca07dc7f13d488929994413282d650f7fa2dda7b78f6fe97500d30f88ba2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.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.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fe712a9168a8827453d95141e6a94877a382a4fe72c3cd50a89b2b93e1d00621
MD5 e9d0b58ace9c3149a46a2c1d358f8745
BLAKE2b-256 a890d90c3be39f711df041b7a0aadbfcfa543b6234b3510d2bb1e8f95f226bac

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: locvec-1.0.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 24.5 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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1c13aac902fbc0b4cbcf08c5bd9c83e164e5955f206f46898391a391df82f0ce
MD5 d46cc56923a1ec45ac9a1cdf5b0f254c
BLAKE2b-256 a521a3a343e2a579b7925fca69c7adb1c92d622658f1b9e66ec3742848390aeb

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.3-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.3-cp310-cp310-win32.whl.

File metadata

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

File hashes

Hashes for locvec-1.0.3-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 a9e5fca49c72b2abf15260a0f7dbaa1e59f55e458511e113bbd30e1fabc5a70b
MD5 54a4399b780c5251b85a98c552084ea7
BLAKE2b-256 bbeb9f33b0c84257ab05f0fc61082e8773e0b0ba7de6b38bf8a41d4190794f0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.3-cp310-cp310-win32.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.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for locvec-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4ef61567e1222aade2bcbcdbf29df1afedc54844abc0fa4087869ac4106013cb
MD5 6fbf9abbe0c63418ee568adb0e962220
BLAKE2b-256 3967bb9fd4c205fca401872350b61ee8f355f0750e08d939295934e62b267f8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_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.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for locvec-1.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8f8f2ff277440727a43e875b9488f47ec900996ca3b4eea8489b6896b0eccc06
MD5 c80507cc24743aa2de06f40be06650d0
BLAKE2b-256 c2e20eacf5b7a88db40f46d6862e4f0cb77dfc9802d11fd5d4e4166fe85a8d9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for locvec-1.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.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.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for locvec-1.0.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cac893551800ce5451511deaee8362d9f1af45158d8b4f4d06d843eb6a577375
MD5 31c7fc5a7e82aa829764792fc3b3aae6
BLAKE2b-256 51ba6018b7224f5728d145d37ed41d2604b53b64d7b13ff4cddff146c34860a4

See more details on using hashes here.

Provenance

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