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)