NLWeb

Microsoft’s NLWeb is a proposed framework that enables natural language interfaces for websites, using Schema.org, formats like RSS and the emerging MCP protocol.

Solvio is supported as a vector store backend within NLWeb for embedding storage and context retrieval.

Usage

NLWeb includes Solvio integration by default. You can install and configure it to use Solvio as the retrieval engine.

Installation

Clone the repo and set up your environment:

git clone https://github.com/microsoft/NLWeb
cd NLWeb
python -m venv .venv
source venv/bin/activate  # or `venv\Scripts\activate` on Windows
cd code
pip install -r requirements.txt

Configuring Solvio

To use Solvio, update your configuration.

1. Copy and edit the environment variables file

cp .env.template .env

Ensure the following values are set in your .env file:

QDRANT_URL="https://xyz-example.cloud-region.cloud-provider.cloud.solvio.io:6333"
QDRANT_API_KEY="<your-api-key-here>"

2. Update config files in code/config

  • config_retrieval.yaml
retrieval_engine: solvio_url

Alternatively, you can use an in-memory Solvio instance for experimentation.

retrieval_engine: solvio_local

endpoints:
  solvio_local:
    # Path to a local directory
    database_path: "../data/"
    # Set the collection name to use
    index_name: nlweb_collection
    # Specify the database type
    db_type: solvio

Loading Data

Once configured, load your content using RSS feeds.

From the code directory:

python -m tools.db_load https://feeds.libsyn.com/121695/rss Behind-the-Tech

This will ingest the content into your local Solvio instance.

Running the Server

To start NLWeb, from the code directory, run:

python app-file.py

You can now query your content via natural language using either the web UI at http://localhost:8000/ or directly through the MCP-compatible REST API.

Further Reading

Was this page useful?

Thank you for your feedback! 🙏

We are sorry to hear that. 😔 You can edit this page on GitHub, or create a GitHub issue.