Handle infinity empty response (#3627)
Browse files### What problem does this PR solve?
Handle infinity empty response. Close #3623
Show version in docker build log
### Type of change
- [x] Bug Fix (non-breaking change which fixes an issue)
- .github/workflows/tests.yml +6 -2
- Dockerfile +1 -0
- Dockerfile.slim +1 -0
- rag/utils/infinity_conn.py +13 -2
.github/workflows/tests.yml
CHANGED
@@ -42,19 +42,23 @@ jobs:
|
|
42 |
- name: Ensure workspace ownership
|
43 |
run: echo "chown -R $USER $GITHUB_WORKSPACE" && sudo chown -R $USER $GITHUB_WORKSPACE
|
44 |
|
|
|
45 |
- name: Check out code
|
46 |
uses: actions/checkout@v4
|
|
|
|
|
|
|
47 |
|
48 |
- name: Build ragflow:dev-slim
|
49 |
run: |
|
50 |
RUNNER_WORKSPACE_PREFIX=${RUNNER_WORKSPACE_PREFIX:-$HOME}
|
51 |
cp -r ${RUNNER_WORKSPACE_PREFIX}/huggingface.co ${RUNNER_WORKSPACE_PREFIX}/nltk_data ${RUNNER_WORKSPACE_PREFIX}/libssl*.deb ${RUNNER_WORKSPACE_PREFIX}/tika-server*.jar* ${RUNNER_WORKSPACE_PREFIX}/chrome* ${RUNNER_WORKSPACE_PREFIX}/cl100k_base.tiktoken .
|
52 |
sudo docker pull ubuntu:22.04
|
53 |
-
sudo docker build -f Dockerfile.slim -t infiniflow/ragflow:dev-slim .
|
54 |
|
55 |
- name: Build ragflow:dev
|
56 |
run: |
|
57 |
-
sudo docker build -f Dockerfile -t infiniflow/ragflow:dev .
|
58 |
|
59 |
- name: Start ragflow:dev-slim
|
60 |
run: |
|
|
|
42 |
- name: Ensure workspace ownership
|
43 |
run: echo "chown -R $USER $GITHUB_WORKSPACE" && sudo chown -R $USER $GITHUB_WORKSPACE
|
44 |
|
45 |
+
# https://github.com/actions/checkout/issues/1781
|
46 |
- name: Check out code
|
47 |
uses: actions/checkout@v4
|
48 |
+
with:
|
49 |
+
fetch-depth: 0
|
50 |
+
fetch-tags: true
|
51 |
|
52 |
- name: Build ragflow:dev-slim
|
53 |
run: |
|
54 |
RUNNER_WORKSPACE_PREFIX=${RUNNER_WORKSPACE_PREFIX:-$HOME}
|
55 |
cp -r ${RUNNER_WORKSPACE_PREFIX}/huggingface.co ${RUNNER_WORKSPACE_PREFIX}/nltk_data ${RUNNER_WORKSPACE_PREFIX}/libssl*.deb ${RUNNER_WORKSPACE_PREFIX}/tika-server*.jar* ${RUNNER_WORKSPACE_PREFIX}/chrome* ${RUNNER_WORKSPACE_PREFIX}/cl100k_base.tiktoken .
|
56 |
sudo docker pull ubuntu:22.04
|
57 |
+
sudo docker build --progress=plain -f Dockerfile.slim -t infiniflow/ragflow:dev-slim .
|
58 |
|
59 |
- name: Build ragflow:dev
|
60 |
run: |
|
61 |
+
sudo docker build --progress=plain -f Dockerfile -t infiniflow/ragflow:dev .
|
62 |
|
63 |
- name: Start ragflow:dev-slim
|
64 |
run: |
|
Dockerfile
CHANGED
@@ -75,6 +75,7 @@ RUN current_commit=$(git rev-parse --short HEAD); \
|
|
75 |
else \
|
76 |
version_info="$version_info full"; \
|
77 |
fi; \
|
|
|
78 |
echo $version_info > /ragflow/VERSION
|
79 |
|
80 |
COPY web web
|
|
|
75 |
else \
|
76 |
version_info="$version_info full"; \
|
77 |
fi; \
|
78 |
+
echo "RAGFlow version: $version_info"; \
|
79 |
echo $version_info > /ragflow/VERSION
|
80 |
|
81 |
COPY web web
|
Dockerfile.slim
CHANGED
@@ -75,6 +75,7 @@ RUN current_commit=$(git rev-parse --short HEAD); \
|
|
75 |
else \
|
76 |
version_info="$version_info full"; \
|
77 |
fi; \
|
|
|
78 |
echo $version_info > /ragflow/VERSION
|
79 |
|
80 |
COPY web web
|
|
|
75 |
else \
|
76 |
version_info="$version_info full"; \
|
77 |
fi; \
|
78 |
+
echo "RAGFlow version: $version_info"; \
|
79 |
echo $version_info > /ragflow/VERSION
|
80 |
|
81 |
COPY web web
|
rag/utils/infinity_conn.py
CHANGED
@@ -48,6 +48,17 @@ def equivalent_condition_to_str(condition: dict) -> str:
|
|
48 |
return " AND ".join(cond)
|
49 |
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
@singleton
|
52 |
class InfinityConnection(DocStoreConnection):
|
53 |
def __init__(self):
|
@@ -289,7 +300,7 @@ class InfinityConnection(DocStoreConnection):
|
|
289 |
kb_res = builder.to_pl()
|
290 |
df_list.append(kb_res)
|
291 |
self.connPool.release_conn(inf_conn)
|
292 |
-
res =
|
293 |
logging.debug("INFINITY search tables: " + str(table_list))
|
294 |
return res
|
295 |
|
@@ -306,7 +317,7 @@ class InfinityConnection(DocStoreConnection):
|
|
306 |
kb_res = table_instance.output(["*"]).filter(f"id = '{chunkId}'").to_pl()
|
307 |
df_list.append(kb_res)
|
308 |
self.connPool.release_conn(inf_conn)
|
309 |
-
res =
|
310 |
res_fields = self.getFields(res, res.columns)
|
311 |
return res_fields.get(chunkId, None)
|
312 |
|
|
|
48 |
return " AND ".join(cond)
|
49 |
|
50 |
|
51 |
+
def concat_dataframes(df_list: list[pl.DataFrame], selectFields: list[str]) -> pl.DataFrame:
|
52 |
+
"""
|
53 |
+
Concatenate multiple dataframes into one.
|
54 |
+
"""
|
55 |
+
if df_list:
|
56 |
+
return pl.concat(df_list)
|
57 |
+
schema = dict()
|
58 |
+
for fieldnm in selectFields:
|
59 |
+
schema[fieldnm] = str
|
60 |
+
return pl.DataFrame(schema=schema)
|
61 |
+
|
62 |
@singleton
|
63 |
class InfinityConnection(DocStoreConnection):
|
64 |
def __init__(self):
|
|
|
300 |
kb_res = builder.to_pl()
|
301 |
df_list.append(kb_res)
|
302 |
self.connPool.release_conn(inf_conn)
|
303 |
+
res = concat_dataframes(df_list, selectFields)
|
304 |
logging.debug("INFINITY search tables: " + str(table_list))
|
305 |
return res
|
306 |
|
|
|
317 |
kb_res = table_instance.output(["*"]).filter(f"id = '{chunkId}'").to_pl()
|
318 |
df_list.append(kb_res)
|
319 |
self.connPool.release_conn(inf_conn)
|
320 |
+
res = concat_dataframes(df_list, ["id"])
|
321 |
res_fields = self.getFields(res, res.columns)
|
322 |
return res_fields.get(chunkId, None)
|
323 |
|