serviette 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- serviette/__init__.py +10 -0
- serviette/cli.py +93 -0
- serviette/config/__init__.py +49 -0
- serviette/config/schema.py +714 -0
- serviette/demo/__init__.py +250 -0
- serviette/demo/corpus/faq.md +12 -0
- serviette/demo/corpus/onboarding.md +12 -0
- serviette/demo/corpus/overview.md +10 -0
- serviette/demo/corpus/pricing.md +12 -0
- serviette/demo/corpus/release-notes.md +10 -0
- serviette/frontend/__init__.py +1 -0
- serviette/frontend/config.py +13 -0
- serviette/frontend/main.py +129 -0
- serviette/frontend/static/index.html +297 -0
- serviette/indexer/__init__.py +6 -0
- serviette/indexer/config.py +13 -0
- serviette/indexer/fingerprint.py +172 -0
- serviette/indexer/graph.py +799 -0
- serviette/indexer/main.py +79 -0
- serviette/indexer/prepare.py +380 -0
- serviette/indexer/sources.py +299 -0
- serviette/quickstart/__init__.py +5 -0
- serviette/quickstart/wizard.py +654 -0
- serviette/server/__init__.py +1 -0
- serviette/server/accessors/__init__.py +53 -0
- serviette/server/accessors/abstract.py +77 -0
- serviette/server/accessors/chroma.py +127 -0
- serviette/server/accessors/duckdb.py +194 -0
- serviette/server/accessors/milvus.py +147 -0
- serviette/server/accessors/mongodb.py +121 -0
- serviette/server/accessors/pgvector.py +134 -0
- serviette/server/accessors/pinecone.py +108 -0
- serviette/server/accessors/qdrant.py +126 -0
- serviette/server/accessors/weaviate.py +126 -0
- serviette/server/bm25.py +77 -0
- serviette/server/config.py +13 -0
- serviette/server/decompose.py +50 -0
- serviette/server/embedder.py +226 -0
- serviette/server/hybrid.py +116 -0
- serviette/server/llm.py +163 -0
- serviette/server/main.py +315 -0
- serviette/server/ranking.py +118 -0
- serviette/server/reranker.py +158 -0
- serviette/testing.py +38 -0
- serviette/up.py +264 -0
- serviette-0.1.0.dist-info/METADATA +516 -0
- serviette-0.1.0.dist-info/RECORD +51 -0
- serviette-0.1.0.dist-info/WHEEL +5 -0
- serviette-0.1.0.dist-info/entry_points.txt +2 -0
- serviette-0.1.0.dist-info/licenses/LICENSE +21 -0
- serviette-0.1.0.dist-info/top_level.txt +1 -0
serviette/__init__.py
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"""serviette — a universal, no-code RAG server built on the Pathway Live Data Framework.
|
|
2
|
+
|
|
3
|
+
The project name is intentionally kept in a single constant so a rename only
|
|
4
|
+
requires a find-and-replace across files plus updating ``APP_NAME`` here.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
APP_NAME = "serviette"
|
|
8
|
+
__version__ = "0.1.0"
|
|
9
|
+
|
|
10
|
+
__all__ = ["APP_NAME", "__version__"]
|
serviette/cli.py
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"""Single ``serviette`` entrypoint dispatching all subcommands.
|
|
2
|
+
|
|
3
|
+
Subcommands:
|
|
4
|
+
serviette indexer --config FILE Build & run the Pathway indexing graph
|
|
5
|
+
serviette server --config FILE Start the FastAPI retrieval/RAG server
|
|
6
|
+
serviette up --config FILE Run indexer + server together (dev/demo)
|
|
7
|
+
serviette quickstart Interactive config-generation wizard
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import argparse
|
|
13
|
+
import sys
|
|
14
|
+
|
|
15
|
+
from serviette import APP_NAME, __version__
|
|
16
|
+
|
|
17
|
+
_OLD_PATHWAY_HINT = (
|
|
18
|
+
"Your installed pathway ({version}) predates the vector-store connectors "
|
|
19
|
+
"serviette needs (pathway >= 0.32.1). Upgrade it in this environment:\n\n"
|
|
20
|
+
" pip install -U 'pathway>=0.32.1'\n"
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _ensure_pathway_connectors() -> None:
|
|
25
|
+
"""Fail with instructions, not an AttributeError, on an old pathway.
|
|
26
|
+
|
|
27
|
+
Engine-facing commands (indexer/up/demo) need the vector-store output
|
|
28
|
+
connectors that shipped in pathway 0.32.1; on an older install the first
|
|
29
|
+
symptom used to be an opaque crash deep in the stack.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
import pathway as pw
|
|
33
|
+
|
|
34
|
+
if not hasattr(pw.io, "duckdb"):
|
|
35
|
+
raise SystemExit(_OLD_PATHWAY_HINT.format(version=pw.__version__))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def main(argv: list[str] | None = None) -> None:
|
|
39
|
+
argv = list(sys.argv[1:] if argv is None else argv)
|
|
40
|
+
|
|
41
|
+
parser = argparse.ArgumentParser(prog=APP_NAME, description=__doc__)
|
|
42
|
+
parser.add_argument("--version", action="version", version=f"{APP_NAME} {__version__}")
|
|
43
|
+
sub = parser.add_subparsers(dest="command", required=True)
|
|
44
|
+
sub.add_parser("indexer", add_help=False, help="Run the indexer")
|
|
45
|
+
sub.add_parser("server", add_help=False, help="Run the server")
|
|
46
|
+
sub.add_parser("up", add_help=False, help="Run indexer + server together")
|
|
47
|
+
sub.add_parser("demo", add_help=False, help="Zero-to-chat demo on a bundled corpus")
|
|
48
|
+
sub.add_parser("frontend", add_help=False, help="Run the web chat frontend")
|
|
49
|
+
sub.add_parser("quickstart", add_help=False, help="Interactive config wizard")
|
|
50
|
+
|
|
51
|
+
# Parse only the first token so each subcommand owns the rest of argv.
|
|
52
|
+
args, rest = parser.parse_known_args(argv)
|
|
53
|
+
|
|
54
|
+
if args.command in ("indexer", "up", "demo"):
|
|
55
|
+
_ensure_pathway_connectors()
|
|
56
|
+
if args.command == "indexer":
|
|
57
|
+
from serviette.indexer.main import main as indexer_main
|
|
58
|
+
|
|
59
|
+
indexer_main(rest)
|
|
60
|
+
elif args.command == "server":
|
|
61
|
+
from serviette.server.config import load_server_config
|
|
62
|
+
from serviette.server.main import run
|
|
63
|
+
|
|
64
|
+
server_args = _parse_config_arg("server", rest)
|
|
65
|
+
run(load_server_config(server_args.config))
|
|
66
|
+
elif args.command == "up":
|
|
67
|
+
from serviette.up import main as up_main
|
|
68
|
+
|
|
69
|
+
up_main(rest)
|
|
70
|
+
elif args.command == "demo":
|
|
71
|
+
from serviette.demo import main as demo_main
|
|
72
|
+
|
|
73
|
+
demo_main(rest)
|
|
74
|
+
elif args.command == "frontend":
|
|
75
|
+
from serviette.frontend.config import load_frontend_config
|
|
76
|
+
from serviette.frontend.main import run
|
|
77
|
+
|
|
78
|
+
frontend_args = _parse_config_arg("frontend", rest)
|
|
79
|
+
run(load_frontend_config(frontend_args.config))
|
|
80
|
+
elif args.command == "quickstart":
|
|
81
|
+
from serviette.quickstart.wizard import main as quickstart_main
|
|
82
|
+
|
|
83
|
+
quickstart_main(rest)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def _parse_config_arg(prog: str, rest: list[str]) -> argparse.Namespace:
|
|
87
|
+
p = argparse.ArgumentParser(prog=f"{APP_NAME} {prog}")
|
|
88
|
+
p.add_argument("--config", required=True, help="Path to the YAML config file")
|
|
89
|
+
return p.parse_args(rest)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
if __name__ == "__main__":
|
|
93
|
+
main()
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"""Shared configuration package for serviette."""
|
|
2
|
+
|
|
3
|
+
from serviette.config.schema import (
|
|
4
|
+
ChromaConfig,
|
|
5
|
+
DuckDbConfig,
|
|
6
|
+
EmbedderConfig,
|
|
7
|
+
FrontendConfig,
|
|
8
|
+
FsSource,
|
|
9
|
+
GDriveSource,
|
|
10
|
+
LLMConfig,
|
|
11
|
+
MilvusConfig,
|
|
12
|
+
MongoDbConfig,
|
|
13
|
+
PersistenceConfig,
|
|
14
|
+
PgVectorConfig,
|
|
15
|
+
PineconeConfig,
|
|
16
|
+
QdrantConfig,
|
|
17
|
+
S3Source,
|
|
18
|
+
ServerConfig,
|
|
19
|
+
ServietteConfig,
|
|
20
|
+
SharePointSource,
|
|
21
|
+
Source,
|
|
22
|
+
SplitterConfig,
|
|
23
|
+
WeaviateConfig,
|
|
24
|
+
load_config,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
__all__ = [
|
|
28
|
+
"ChromaConfig",
|
|
29
|
+
"DuckDbConfig",
|
|
30
|
+
"EmbedderConfig",
|
|
31
|
+
"FrontendConfig",
|
|
32
|
+
"FsSource",
|
|
33
|
+
"GDriveSource",
|
|
34
|
+
"LLMConfig",
|
|
35
|
+
"MilvusConfig",
|
|
36
|
+
"MongoDbConfig",
|
|
37
|
+
"PersistenceConfig",
|
|
38
|
+
"PgVectorConfig",
|
|
39
|
+
"PineconeConfig",
|
|
40
|
+
"QdrantConfig",
|
|
41
|
+
"S3Source",
|
|
42
|
+
"ServerConfig",
|
|
43
|
+
"ServietteConfig",
|
|
44
|
+
"SharePointSource",
|
|
45
|
+
"Source",
|
|
46
|
+
"SplitterConfig",
|
|
47
|
+
"WeaviateConfig",
|
|
48
|
+
"load_config",
|
|
49
|
+
]
|