MCP ExplorerExplorer

Vectorcode

@Davidyzon 18 days ago
460 MIT
FreeCommunity
AI Systems
#neovim-plugin#retrieval-augmented#embeddings#rag#mcp#mcp-server
A code repository indexing tool that enhances your LLM (Large Language Model) experience.

Overview

What is Vectorcode

VectorCode is a code repository indexing tool designed to enhance your experience with coding language models (LLMs) by indexing and providing relevant information about the code repository you are working on.

Use cases

Use cases for VectorCode include enhancing LLM interactions in coding tasks, improving code completion suggestions, and providing context for LLMs when working with niche or proprietary codebases.

How to use

To use VectorCode, integrate it with your coding environment, such as Neovim, and utilize its indexing capabilities to improve prompt generation for LLMs. The tool is currently in beta, so users are encouraged to provide feedback and contribute to its development.

Key features

Key features of VectorCode include basic retrieval and embedding functionalities, integration with various embedding engines through Chromadb, and a Neovim plugin for seamless usage.

Where to use

VectorCode can be used in software development environments, particularly when working with LLMs on code repositories, especially those that are less known or have limited documentation.

Content

VectorCode

codecov
Test and Coverage
pypi

VectorCode is a code repository indexing tool. It helps you build better prompt
for your coding LLMs by indexing and providing information about the code
repository you’re working on. This repository also contains the corresponding
neovim plugin that provides a set of APIs for you to build or enhance AI plugins,
and integrations for some of the popular plugins.

[!NOTE]
This project is in beta quality and is undergoing rapid iterations.
I know there are plenty of rooms for improvements, and any help is welcomed.

Why VectorCode?

LLMs usually have very limited understanding about close-source projects, projects
that are not well-known, and cutting edge developments that have not made it into
releases. Their capabilities on these projects are quite limited. With
VectorCode, you can easily (and programmatically) inject task-relevant context
from the project into the prompt. This significantly improves the quality of the
model output and reduce hallucination.

asciicast

Documentation

[!NOTE]
The documentation on the main branch reflects the code on the latest commit.
To check for the documentation for the version you’re using, you can check out
the corresponding tags
.

  • For the setup and usage of the command-line tool, see the CLI documentation;
  • For neovim users, after you’ve gone through the CLI documentation, please refer to
    the neovim plugin documentation for further instructions.
  • Additional resources:
    • the wiki for extra tricks and
      tips that will help you get the most out of VectorCode, as well as
      instructions to setup VectorCode to work with some other neovim plugins;
    • the discussions where
      you can ask general questions and share your cool usages about VectorCode.

If you’re trying to contribute to this project, take a look at the contribution
guide
, which contains information about some basic
guidelines that you should follow and tips that you may find helpful.

About Versioning

This project follows an adapted semantic versioning:

  • Until 1.0.0 is released, the major version number stays 0 which indicates that
    this project is still in early stage, and features/interfaces may change from
    time to time;
  • The minor version number indicates breaking changes. When I decide to remove a
    feature/config option, the actual removal will happen when I bump the minor
    version number. Therefore, if you want to avoid breaking a working setup, you
    may choose to use a version constraint like "vectorcode<0.7.0";
  • The patch version number indicates non-breaking changes. This can include new
    features and bug fixes. When I decide to deprecate things, I will make a new
    release with bumped patch version. Until the minor version number is bumped,
    the deprecated feature will still work but you’ll see a warning. It’s
    recommended to update your setup to adapt the new features.

TODOs

  • [x] query by ~file path~ excluded paths;
  • [x] chunking support;
    • [x] add metadata for files;
    • [x] chunk-size configuration;
    • [x] smarter chunking (semantics/syntax based), implemented with
      py-tree-sitter and
      tree-sitter-language-pack;
    • [x] configurable document selection from query results.
  • [x] ~NeoVim Lua API with cache to skip the retrieval when a project has not
    been indexed~ Returns empty array instead;
  • [x] job pool for async caching;
  • [x] persistent-client;
  • [ ] proper remote Chromadb support (with authentication, etc.);
  • [x] respect .gitignore;
  • [x] implement some sort of project-root anchors (such as .git or a custom
    .vectorcode.json) that enhances automatic project-root detection.
    Implemented project-level .vectorcode/ and .git as root anchor
  • [ ] ability to view and delete files in a collection (atm you can only drop
    and vectorise again);
  • [x] joint search (kinda, using codecompanion.nvim/MCP);
  • [x] Nix support (unofficial packages here);
  • [ ] Query rewriting (#124).

Credit

Star History

Star History Chart

Tools

No tools

Comments