diff --git a/README.md b/README.md index f346b6c6cc102fc333f9c2612d96cc0533b1e2e4..0d898e82ff0f07361aec7dadde68cc80df6ec2fb 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,20 @@ ## 🤺RagFlow vs. other RAG applications +| Feature | RagFlow | Langchain-Chatchat | Dify.AI | Assistants API | QAnythig | LangChain | +|---------|:---------:|:----------------:|:-----------:|:-----------:|:-----------:|:-----------:| +| **Well-Founded Answer** | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | +| **Trackable Chunking** | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | +| **Chunking Method** | Rich Variety | Naive | Naive | Naive | Naive | Naive | +| **Table Structure Recognition** | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | +| **Structured Data Lookup** | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | +| **Programming Approach** | API-oriented | API-oriented | API-oriented | API-oriented | API-oriented | Python Code-oriented | +| **RAG Engine** | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| **Prompt IDE** | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| **Supported LLMs** | Rich Variety | Rich Variety | Rich Variety | OpenAI-only | QwenLLM | Rich Variety | +| **Local Deployment** | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | +| **Ecosystem Strategy** | Open Source | Open Source | Open Source | Close Source | Open Source | Open Source | + ## 🔎 System Architecture <div align="center" style="margin-top:20px;margin-bottom:20px;"> diff --git a/api/apps/llm_app.py b/api/apps/llm_app.py index 25bcca25942fb8769618a2193d7968bfb62e2790..e8d42a3ed8a849c7fcbaf195e8cb4fdc1ee7d8a9 100644 --- a/api/apps/llm_app.py +++ b/api/apps/llm_app.py @@ -69,7 +69,8 @@ def set_api_key(): return get_data_error_result(retmsg=msg) llm = { - "api_key": req["api_key"] + "api_key": req["api_key"], + "api_base": req.get("base_url", "") } for n in ["model_type", "llm_name"]: if n in req: diff --git a/api/db/services/common_service.py b/api/db/services/common_service.py index ad87d65da65f775fcfbdc0ca20cd9d18be0d0652..43e7c734ed07c73a284a33af425721fd7edafba5 100644 --- a/api/db/services/common_service.py +++ b/api/db/services/common_service.py @@ -143,7 +143,7 @@ class CommonService: @DB.connection_context() def filter_update(cls, filters, update_data): with DB.atomic(): - cls.model.update(update_data).where(*filters).execute() + return cls.model.update(update_data).where(*filters).execute() @staticmethod def cut_list(tar_list, n): diff --git a/rag/nlp/query.py b/rag/nlp/query.py index ea5b5cb4b989af9f05f0c471871ff095ca515d23..6a829a1d3c92dbd93152c4441318a942c3372d48 100644 --- a/rag/nlp/query.py +++ b/rag/nlp/query.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import json +import math import re import logging import copy @@ -167,4 +168,4 @@ class EsQueryer: #d = 1e-9 # for k, v in dtwt.items(): # d += v * v - return s / q # math.sqrt(q) / math.sqrt(d) + return s / q / max(1, math.sqrt(math.log10(max(len(qtwt.keys()), len(dtwt.keys())))))# math.sqrt(q) / math.sqrt(d)