Commit 2bcba69b authored by Kantz's avatar Kantz
Browse files

weitere Überarbeitung des retrival, Ingest funktioniert jetzt wieder

parent 9af93f56
...@@ -32,21 +32,21 @@ Init DB schema: ...@@ -32,21 +32,21 @@ Init DB schema:
```powershell ```powershell
cd math-tutor/backend cd math-tutor/backend
.\.venv\Scripts\Activate.ps1 .\.venv\Scripts\Activate.ps1
python .\scripts\retrieval_cli.py init-db python -m scripts.retrieval_cli init-db
``` ```
Ingest markdown docs (expects `markdown/sections`, `markdown/subsections`, `markdown/childs`): Ingest markdown docs (expects `markdown/sections`, `markdown/subsections`, `markdown/childs`):
```powershell ```powershell
cd math-tutor/backend cd math-tutor/backend
.\.venv\Scripts\Activate.ps1 .\.venv\Scripts\Activate.ps1
python .\scripts\retrieval_cli.py ingest --base markdown --clear python -m scripts.retrieval_cli ingest --base markdown --clear
``` ```
Query via CLI: Query via CLI:
```powershell ```powershell
cd math-tutor/backend cd math-tutor/backend
.\.venv\Scripts\Activate.ps1 .\.venv\Scripts\Activate.ps1
python .\scripts\retrieval_cli.py query --q "Was ist eine Teilmenge?" --k 8 --expand python -m scripts.retrieval_cli query --q "Was ist eine Teilmenge?" --k 8 --expand
``` ```
## Configuration ## Configuration
......
...@@ -91,20 +91,6 @@ def get_ollama_settings() -> OllamaSettings: ...@@ -91,20 +91,6 @@ def get_ollama_settings() -> OllamaSettings:
temperature=_read_float(os.getenv("OLLAMA_TEMPERATURE")), temperature=_read_float(os.getenv("OLLAMA_TEMPERATURE")),
) )
def get_embedding_settings() -> EmbeddingSettings:
base_url = os.getenv("OPENAI_BASE_URL")
api_key = os.getenv("OPENAI_API_KEY")
model = os.getenv("OPENAI_EMBED_MODEL", "text-embedding-3-large")
if not base_url or not api_key:
raise ValueError("Missing OPENAI_BASE_URL or OPENAI_API_KEY")
return EmbeddingSettings(
base_url=base_url,
api_key=api_key,
model=model,
target_dim=1024,
)
def get_openai_chat_settings() -> OpenAIChatSettings | None: def get_openai_chat_settings() -> OpenAIChatSettings | None:
model = os.getenv("OPENAI_CHAT_MODEL") model = os.getenv("OPENAI_CHAT_MODEL")
if not model: if not model:
......
...@@ -186,8 +186,8 @@ class EmbeddingFactory: ...@@ -186,8 +186,8 @@ class EmbeddingFactory:
ValueError: Wenn der Typ nicht unterstützt wird. ValueError: Wenn der Typ nicht unterstützt wird.
""" """
if config.embedding_type == EmbeddingType.OPENAI_LIKE: if config.embedding_type == EmbeddingType.OPENAI_LIKE:
return OpenAILikeEmbeddings(config=config.config) return OpenAILikeEmbeddings(config=config)
elif config.embedding_type == EmbeddingType.SENTENCE_TRANSFORMER: elif config.embedding_type == EmbeddingType.SENTENCE_TRANSFORMER:
return SentenceTransformerEmbeddings(config=config.config) return SentenceTransformerEmbeddings(config=config)
else: else:
raise ValueError(f"Unsupported embedding type: {config.embedding_type}") raise ValueError(f"Unsupported embedding type: {config.embedding_type}")
\ No newline at end of file
...@@ -59,24 +59,10 @@ def cli_query(args: argparse.Namespace) -> None: ...@@ -59,24 +59,10 @@ def cli_query(args: argparse.Namespace) -> None:
expand_links=args.expand, expand_links=args.expand,
section_index=args.section_index, section_index=args.section_index,
subsection_index=args.subsection_index, subsection_index=args.subsection_index,
type_filter=args.type_filter, source_type_filter=args.source_type_filter,
) )
print("=== SECTIONS ===") for item in result:
for item in result["sections"]: print(f"- [{item.score:.3f}] {item.source_id.title} ({item.source_type})")
meta = item.metadata
print(f"- [{item.score:.3f}] s{meta.get('section_index')} {meta.get('title') or meta.get('section_title')}")
print("=== SUBSECTIONS ===")
for item in result["subsections"]:
meta = item.metadata
print(
f"- [{item.score:.3f}] s{meta.get('section_index')}, ss{meta.get('subsection_index')} {meta.get('title')}"
)
print("=== CHILDREN ===")
for item in result["children"]:
meta = item.metadata
print(
f"- [{item.score:.3f}] s{meta.get('section_index')}, ss{meta.get('subsection_index')}, c{meta.get('child_index')}"
)
def main() -> int: def main() -> int:
...@@ -101,7 +87,7 @@ def main() -> int: ...@@ -101,7 +87,7 @@ def main() -> int:
ap_q.add_argument("--expand", action="store_true") ap_q.add_argument("--expand", action="store_true")
ap_q.add_argument("--section-index", type=int, default=None) ap_q.add_argument("--section-index", type=int, default=None)
ap_q.add_argument("--subsection-index", type=int, default=None) ap_q.add_argument("--subsection-index", type=int, default=None)
ap_q.add_argument("--type-filter", nargs="*", default=None) ap_q.add_argument("--source_type_filter", nargs="*", default=None)
ap_q.set_defaults(func=cli_query) ap_q.set_defaults(func=cli_query)
args = parser.parse_args() args = parser.parse_args()
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment