AutoRAG 0.0.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.
Files changed (184) hide show
  1. autorag/__init__.py +82 -0
  2. autorag/chunker.py +51 -0
  3. autorag/cli.py +209 -0
  4. autorag/dashboard.py +199 -0
  5. autorag/data/__init__.py +109 -0
  6. autorag/data/chunk/__init__.py +2 -0
  7. autorag/data/chunk/base.py +128 -0
  8. autorag/data/chunk/langchain_chunk.py +76 -0
  9. autorag/data/chunk/llama_index_chunk.py +96 -0
  10. autorag/data/chunk/run.py +38 -0
  11. autorag/data/legacy/__init__.py +0 -0
  12. autorag/data/legacy/corpus/__init__.py +2 -0
  13. autorag/data/legacy/corpus/langchain.py +47 -0
  14. autorag/data/legacy/corpus/llama_index.py +93 -0
  15. autorag/data/legacy/qacreation/__init__.py +6 -0
  16. autorag/data/legacy/qacreation/base.py +239 -0
  17. autorag/data/legacy/qacreation/llama_index.py +253 -0
  18. autorag/data/legacy/qacreation/llama_index_default_prompt.txt +54 -0
  19. autorag/data/legacy/qacreation/ragas.py +75 -0
  20. autorag/data/legacy/qacreation/simple.py +99 -0
  21. autorag/data/parse/__init__.py +1 -0
  22. autorag/data/parse/base.py +79 -0
  23. autorag/data/parse/clova.py +194 -0
  24. autorag/data/parse/langchain_parse.py +87 -0
  25. autorag/data/parse/llamaparse.py +126 -0
  26. autorag/data/parse/run.py +141 -0
  27. autorag/data/parse/table_hybrid_parse.py +134 -0
  28. autorag/data/qa/__init__.py +3 -0
  29. autorag/data/qa/evolve/__init__.py +0 -0
  30. autorag/data/qa/evolve/llama_index_query_evolve.py +64 -0
  31. autorag/data/qa/evolve/openai_query_evolve.py +81 -0
  32. autorag/data/qa/evolve/prompt.py +288 -0
  33. autorag/data/qa/extract_evidence.py +1 -0
  34. autorag/data/qa/filter/__init__.py +0 -0
  35. autorag/data/qa/filter/dontknow.py +117 -0
  36. autorag/data/qa/filter/passage_dependency.py +88 -0
  37. autorag/data/qa/filter/prompt.py +73 -0
  38. autorag/data/qa/generation_gt/__init__.py +0 -0
  39. autorag/data/qa/generation_gt/base.py +16 -0
  40. autorag/data/qa/generation_gt/llama_index_gen_gt.py +41 -0
  41. autorag/data/qa/generation_gt/openai_gen_gt.py +84 -0
  42. autorag/data/qa/generation_gt/prompt.py +27 -0
  43. autorag/data/qa/query/__init__.py +0 -0
  44. autorag/data/qa/query/llama_gen_query.py +82 -0
  45. autorag/data/qa/query/openai_gen_query.py +95 -0
  46. autorag/data/qa/query/prompt.py +201 -0
  47. autorag/data/qa/sample.py +26 -0
  48. autorag/data/qa/schema.py +322 -0
  49. autorag/data/utils/__init__.py +0 -0
  50. autorag/data/utils/util.py +103 -0
  51. autorag/deploy/__init__.py +9 -0
  52. autorag/deploy/api.py +303 -0
  53. autorag/deploy/base.py +235 -0
  54. autorag/deploy/gradio.py +74 -0
  55. autorag/deploy/swagger.yml +202 -0
  56. autorag/embedding/__init__.py +0 -0
  57. autorag/embedding/base.py +144 -0
  58. autorag/embedding/vllm.py +256 -0
  59. autorag/evaluation/__init__.py +3 -0
  60. autorag/evaluation/generation.py +88 -0
  61. autorag/evaluation/metric/__init__.py +22 -0
  62. autorag/evaluation/metric/deepeval_prompt.py +322 -0
  63. autorag/evaluation/metric/g_eval_prompts/coh_detailed.txt +32 -0
  64. autorag/evaluation/metric/g_eval_prompts/con_detailed.txt +33 -0
  65. autorag/evaluation/metric/g_eval_prompts/flu_detailed.txt +26 -0
  66. autorag/evaluation/metric/g_eval_prompts/rel_detailed.txt +33 -0
  67. autorag/evaluation/metric/generation.py +504 -0
  68. autorag/evaluation/metric/retrieval.py +115 -0
  69. autorag/evaluation/metric/retrieval_contents.py +65 -0
  70. autorag/evaluation/metric/util.py +88 -0
  71. autorag/evaluation/retrieval.py +83 -0
  72. autorag/evaluation/retrieval_contents.py +65 -0
  73. autorag/evaluation/util.py +43 -0
  74. autorag/evaluator.py +559 -0
  75. autorag/node_line.py +65 -0
  76. autorag/nodes/__init__.py +0 -0
  77. autorag/nodes/generator/__init__.py +4 -0
  78. autorag/nodes/generator/base.py +103 -0
  79. autorag/nodes/generator/llama_index_llm.py +169 -0
  80. autorag/nodes/generator/openai_llm.py +329 -0
  81. autorag/nodes/generator/run.py +148 -0
  82. autorag/nodes/generator/vllm.py +147 -0
  83. autorag/nodes/generator/vllm_api.py +191 -0
  84. autorag/nodes/hybridretrieval/__init__.py +2 -0
  85. autorag/nodes/hybridretrieval/base.py +58 -0
  86. autorag/nodes/hybridretrieval/hybrid_cc.py +227 -0
  87. autorag/nodes/hybridretrieval/hybrid_rrf.py +149 -0
  88. autorag/nodes/hybridretrieval/run.py +137 -0
  89. autorag/nodes/lexicalretrieval/__init__.py +1 -0
  90. autorag/nodes/lexicalretrieval/bm25.py +381 -0
  91. autorag/nodes/lexicalretrieval/run.py +148 -0
  92. autorag/nodes/passageaugmenter/__init__.py +2 -0
  93. autorag/nodes/passageaugmenter/base.py +76 -0
  94. autorag/nodes/passageaugmenter/pass_passage_augmenter.py +43 -0
  95. autorag/nodes/passageaugmenter/prev_next_augmenter.py +155 -0
  96. autorag/nodes/passageaugmenter/run.py +131 -0
  97. autorag/nodes/passagecompressor/__init__.py +4 -0
  98. autorag/nodes/passagecompressor/base.py +78 -0
  99. autorag/nodes/passagecompressor/longllmlingua.py +115 -0
  100. autorag/nodes/passagecompressor/pass_compressor.py +16 -0
  101. autorag/nodes/passagecompressor/refine.py +54 -0
  102. autorag/nodes/passagecompressor/run.py +186 -0
  103. autorag/nodes/passagecompressor/tree_summarize.py +56 -0
  104. autorag/nodes/passagefilter/__init__.py +6 -0
  105. autorag/nodes/passagefilter/base.py +40 -0
  106. autorag/nodes/passagefilter/pass_passage_filter.py +14 -0
  107. autorag/nodes/passagefilter/percentile_cutoff.py +58 -0
  108. autorag/nodes/passagefilter/recency.py +105 -0
  109. autorag/nodes/passagefilter/run.py +138 -0
  110. autorag/nodes/passagefilter/similarity_percentile_cutoff.py +134 -0
  111. autorag/nodes/passagefilter/similarity_threshold_cutoff.py +112 -0
  112. autorag/nodes/passagefilter/threshold_cutoff.py +78 -0
  113. autorag/nodes/passagereranker/__init__.py +16 -0
  114. autorag/nodes/passagereranker/base.py +44 -0
  115. autorag/nodes/passagereranker/cohere.py +118 -0
  116. autorag/nodes/passagereranker/colbert.py +213 -0
  117. autorag/nodes/passagereranker/flag_embedding.py +112 -0
  118. autorag/nodes/passagereranker/flag_embedding_llm.py +101 -0
  119. autorag/nodes/passagereranker/flashrank.py +245 -0
  120. autorag/nodes/passagereranker/jina.py +115 -0
  121. autorag/nodes/passagereranker/koreranker.py +136 -0
  122. autorag/nodes/passagereranker/mixedbreadai.py +126 -0
  123. autorag/nodes/passagereranker/monot5.py +190 -0
  124. autorag/nodes/passagereranker/openvino.py +191 -0
  125. autorag/nodes/passagereranker/pass_reranker.py +31 -0
  126. autorag/nodes/passagereranker/rankgpt.py +170 -0
  127. autorag/nodes/passagereranker/run.py +145 -0
  128. autorag/nodes/passagereranker/sentence_transformer.py +129 -0
  129. autorag/nodes/passagereranker/tart/__init__.py +1 -0
  130. autorag/nodes/passagereranker/tart/modeling_enc_t5.py +152 -0
  131. autorag/nodes/passagereranker/tart/tart.py +139 -0
  132. autorag/nodes/passagereranker/tart/tokenization_enc_t5.py +112 -0
  133. autorag/nodes/passagereranker/time_reranker.py +72 -0
  134. autorag/nodes/passagereranker/upr.py +160 -0
  135. autorag/nodes/passagereranker/voyageai.py +109 -0
  136. autorag/nodes/promptmaker/__init__.py +12 -0
  137. autorag/nodes/promptmaker/base.py +32 -0
  138. autorag/nodes/promptmaker/chat_fstring.py +73 -0
  139. autorag/nodes/promptmaker/fstring.py +49 -0
  140. autorag/nodes/promptmaker/long_context_reorder.py +83 -0
  141. autorag/nodes/promptmaker/run.py +283 -0
  142. autorag/nodes/promptmaker/window_replacement.py +85 -0
  143. autorag/nodes/queryexpansion/__init__.py +4 -0
  144. autorag/nodes/queryexpansion/base.py +62 -0
  145. autorag/nodes/queryexpansion/hyde.py +43 -0
  146. autorag/nodes/queryexpansion/multi_query_expansion.py +57 -0
  147. autorag/nodes/queryexpansion/pass_query_expansion.py +22 -0
  148. autorag/nodes/queryexpansion/query_decompose.py +111 -0
  149. autorag/nodes/queryexpansion/run.py +308 -0
  150. autorag/nodes/retrieval/__init__.py +0 -0
  151. autorag/nodes/retrieval/base.py +127 -0
  152. autorag/nodes/retrieval/run_util.py +152 -0
  153. autorag/nodes/semanticretrieval/__init__.py +1 -0
  154. autorag/nodes/semanticretrieval/run.py +148 -0
  155. autorag/nodes/semanticretrieval/vectordb.py +339 -0
  156. autorag/nodes/util.py +16 -0
  157. autorag/parser.py +37 -0
  158. autorag/schema/__init__.py +3 -0
  159. autorag/schema/base.py +35 -0
  160. autorag/schema/metricinput.py +99 -0
  161. autorag/schema/module.py +24 -0
  162. autorag/schema/node.py +144 -0
  163. autorag/strategy.py +165 -0
  164. autorag/support.py +235 -0
  165. autorag/utils/__init__.py +8 -0
  166. autorag/utils/cast.py +45 -0
  167. autorag/utils/preprocess.py +149 -0
  168. autorag/utils/util.py +759 -0
  169. autorag/validator.py +98 -0
  170. autorag/vectordb/__init__.py +75 -0
  171. autorag/vectordb/base.py +73 -0
  172. autorag/vectordb/chroma.py +118 -0
  173. autorag/vectordb/couchbase.py +239 -0
  174. autorag/vectordb/milvus.py +169 -0
  175. autorag/vectordb/pinecone.py +121 -0
  176. autorag/vectordb/qdrant.py +155 -0
  177. autorag/vectordb/weaviate.py +184 -0
  178. autorag/web.py +81 -0
  179. autorag-0.0.0.dist-info/METADATA +780 -0
  180. autorag-0.0.0.dist-info/RECORD +184 -0
  181. autorag-0.0.0.dist-info/WHEEL +5 -0
  182. autorag-0.0.0.dist-info/entry_points.txt +2 -0
  183. autorag-0.0.0.dist-info/licenses/LICENSE +201 -0
  184. autorag-0.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,780 @@
1
+ Metadata-Version: 2.4
2
+ Name: AutoRAG
3
+ Version: 0.0.0
4
+ Summary: Automatically Evaluate RAG pipelines with your own data. Find optimal structure for new RAG product.
5
+ Author-email: Marker-Inc <vkehfdl1@gmail.com>
6
+ License: Apache License
7
+ Version 2.0, January 2004
8
+ http://www.apache.org/licenses/
9
+
10
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
11
+
12
+ 1. Definitions.
13
+
14
+ "License" shall mean the terms and conditions for use, reproduction,
15
+ and distribution as defined by Sections 1 through 9 of this document.
16
+
17
+ "Licensor" shall mean the copyright owner or entity authorized by
18
+ the copyright owner that is granting the License.
19
+
20
+ "Legal Entity" shall mean the union of the acting entity and all
21
+ other entities that control, are controlled by, or are under common
22
+ control with that entity. For the purposes of this definition,
23
+ "control" means (i) the power, direct or indirect, to cause the
24
+ direction or management of such entity, whether by contract or
25
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
26
+ outstanding shares, or (iii) beneficial ownership of such entity.
27
+
28
+ "You" (or "Your") shall mean an individual or Legal Entity
29
+ exercising permissions granted by this License.
30
+
31
+ "Source" form shall mean the preferred form for making modifications,
32
+ including but not limited to software source code, documentation
33
+ source, and configuration files.
34
+
35
+ "Object" form shall mean any form resulting from mechanical
36
+ transformation or translation of a Source form, including but
37
+ not limited to compiled object code, generated documentation,
38
+ and conversions to other media types.
39
+
40
+ "Work" shall mean the work of authorship, whether in Source or
41
+ Object form, made available under the License, as indicated by a
42
+ copyright notice that is included in or attached to the work
43
+ (an example is provided in the Appendix below).
44
+
45
+ "Derivative Works" shall mean any work, whether in Source or Object
46
+ form, that is based on (or derived from) the Work and for which the
47
+ editorial revisions, annotations, elaborations, or other modifications
48
+ represent, as a whole, an original work of authorship. For the purposes
49
+ of this License, Derivative Works shall not include works that remain
50
+ separable from, or merely link (or bind by name) to the interfaces of,
51
+ the Work and Derivative Works thereof.
52
+
53
+ "Contribution" shall mean any work of authorship, including
54
+ the original version of the Work and any modifications or additions
55
+ to that Work or Derivative Works thereof, that is intentionally
56
+ submitted to Licensor for inclusion in the Work by the copyright owner
57
+ or by an individual or Legal Entity authorized to submit on behalf of
58
+ the copyright owner. For the purposes of this definition, "submitted"
59
+ means any form of electronic, verbal, or written communication sent
60
+ to the Licensor or its representatives, including but not limited to
61
+ communication on electronic mailing lists, source code control systems,
62
+ and issue tracking systems that are managed by, or on behalf of, the
63
+ Licensor for the purpose of discussing and improving the Work, but
64
+ excluding communication that is conspicuously marked or otherwise
65
+ designated in writing by the copyright owner as "Not a Contribution."
66
+
67
+ "Contributor" shall mean Licensor and any individual or Legal Entity
68
+ on behalf of whom a Contribution has been received by Licensor and
69
+ subsequently incorporated within the Work.
70
+
71
+ 2. Grant of Copyright License. Subject to the terms and conditions of
72
+ this License, each Contributor hereby grants to You a perpetual,
73
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
74
+ copyright license to reproduce, prepare Derivative Works of,
75
+ publicly display, publicly perform, sublicense, and distribute the
76
+ Work and such Derivative Works in Source or Object form.
77
+
78
+ 3. Grant of Patent License. Subject to the terms and conditions of
79
+ this License, each Contributor hereby grants to You a perpetual,
80
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
81
+ (except as stated in this section) patent license to make, have made,
82
+ use, offer to sell, sell, import, and otherwise transfer the Work,
83
+ where such license applies only to those patent claims licensable
84
+ by such Contributor that are necessarily infringed by their
85
+ Contribution(s) alone or by combination of their Contribution(s)
86
+ with the Work to which such Contribution(s) was submitted. If You
87
+ institute patent litigation against any entity (including a
88
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
89
+ or a Contribution incorporated within the Work constitutes direct
90
+ or contributory patent infringement, then any patent licenses
91
+ granted to You under this License for that Work shall terminate
92
+ as of the date such litigation is filed.
93
+
94
+ 4. Redistribution. You may reproduce and distribute copies of the
95
+ Work or Derivative Works thereof in any medium, with or without
96
+ modifications, and in Source or Object form, provided that You
97
+ meet the following conditions:
98
+
99
+ (a) You must give any other recipients of the Work or
100
+ Derivative Works a copy of this License; and
101
+
102
+ (b) You must cause any modified files to carry prominent notices
103
+ stating that You changed the files; and
104
+
105
+ (c) You must retain, in the Source form of any Derivative Works
106
+ that You distribute, all copyright, patent, trademark, and
107
+ attribution notices from the Source form of the Work,
108
+ excluding those notices that do not pertain to any part of
109
+ the Derivative Works; and
110
+
111
+ (d) If the Work includes a "NOTICE" text file as part of its
112
+ distribution, then any Derivative Works that You distribute must
113
+ include a readable copy of the attribution notices contained
114
+ within such NOTICE file, excluding those notices that do not
115
+ pertain to any part of the Derivative Works, in at least one
116
+ of the following places: within a NOTICE text file distributed
117
+ as part of the Derivative Works; within the Source form or
118
+ documentation, if provided along with the Derivative Works; or,
119
+ within a display generated by the Derivative Works, if and
120
+ wherever such third-party notices normally appear. The contents
121
+ of the NOTICE file are for informational purposes only and
122
+ do not modify the License. You may add Your own attribution
123
+ notices within Derivative Works that You distribute, alongside
124
+ or as an addendum to the NOTICE text from the Work, provided
125
+ that such additional attribution notices cannot be construed
126
+ as modifying the License.
127
+
128
+ You may add Your own copyright statement to Your modifications and
129
+ may provide additional or different license terms and conditions
130
+ for use, reproduction, or distribution of Your modifications, or
131
+ for any such Derivative Works as a whole, provided Your use,
132
+ reproduction, and distribution of the Work otherwise complies with
133
+ the conditions stated in this License.
134
+
135
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
136
+ any Contribution intentionally submitted for inclusion in the Work
137
+ by You to the Licensor shall be under the terms and conditions of
138
+ this License, without any additional terms or conditions.
139
+ Notwithstanding the above, nothing herein shall supersede or modify
140
+ the terms of any separate license agreement you may have executed
141
+ with Licensor regarding such Contributions.
142
+
143
+ 6. Trademarks. This License does not grant permission to use the trade
144
+ names, trademarks, service marks, or product names of the Licensor,
145
+ except as required for reasonable and customary use in describing the
146
+ origin of the Work and reproducing the content of the NOTICE file.
147
+
148
+ 7. Disclaimer of Warranty. Unless required by applicable law or
149
+ agreed to in writing, Licensor provides the Work (and each
150
+ Contributor provides its Contributions) on an "AS IS" BASIS,
151
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
152
+ implied, including, without limitation, any warranties or conditions
153
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
154
+ PARTICULAR PURPOSE. You are solely responsible for determining the
155
+ appropriateness of using or redistributing the Work and assume any
156
+ risks associated with Your exercise of permissions under this License.
157
+
158
+ 8. Limitation of Liability. In no event and under no legal theory,
159
+ whether in tort (including negligence), contract, or otherwise,
160
+ unless required by applicable law (such as deliberate and grossly
161
+ negligent acts) or agreed to in writing, shall any Contributor be
162
+ liable to You for damages, including any direct, indirect, special,
163
+ incidental, or consequential damages of any character arising as a
164
+ result of this License or out of the use or inability to use the
165
+ Work (including but not limited to damages for loss of goodwill,
166
+ work stoppage, computer failure or malfunction, or any and all
167
+ other commercial damages or losses), even if such Contributor
168
+ has been advised of the possibility of such damages.
169
+
170
+ 9. Accepting Warranty or Additional Liability. While redistributing
171
+ the Work or Derivative Works thereof, You may choose to offer,
172
+ and charge a fee for, acceptance of support, warranty, indemnity,
173
+ or other liability obligations and/or rights consistent with this
174
+ License. However, in accepting such obligations, You may act only
175
+ on Your own behalf and on Your sole responsibility, not on behalf
176
+ of any other Contributor, and only if You agree to indemnify,
177
+ defend, and hold each Contributor harmless for any liability
178
+ incurred by, or claims asserted against, such Contributor by reason
179
+ of your accepting any such warranty or additional liability.
180
+
181
+ END OF TERMS AND CONDITIONS
182
+
183
+ APPENDIX: How to apply the Apache License to your work.
184
+
185
+ To apply the Apache License to your work, attach the following
186
+ boilerplate notice, with the fields enclosed by brackets "[]"
187
+ replaced with your own identifying information. (Don't include
188
+ the brackets!) The text should be enclosed in the appropriate
189
+ comment syntax for the file format. We also recommend that a
190
+ file or class name and description of purpose be included on the
191
+ same "printed page" as the copyright notice for easier
192
+ identification within third-party archives.
193
+
194
+ Copyright [yyyy] [name of copyright owner]
195
+
196
+ Licensed under the Apache License, Version 2.0 (the "License");
197
+ you may not use this file except in compliance with the License.
198
+ You may obtain a copy of the License at
199
+
200
+ http://www.apache.org/licenses/LICENSE-2.0
201
+
202
+ Unless required by applicable law or agreed to in writing, software
203
+ distributed under the License is distributed on an "AS IS" BASIS,
204
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
205
+ See the License for the specific language governing permissions and
206
+ limitations under the License.
207
+
208
+ Project-URL: Homepage, https://github.com/Marker-Inc-Korea/AutoRAG
209
+ Keywords: RAG,AutoRAG,autorag,rag-evaluation,evaluation,rag-auto,AutoML,AutoML-RAG
210
+ Classifier: Intended Audience :: Developers
211
+ Classifier: Intended Audience :: Information Technology
212
+ Classifier: Intended Audience :: Science/Research
213
+ Classifier: Programming Language :: Python :: 3.10
214
+ Classifier: Programming Language :: Python :: 3.11
215
+ Classifier: Programming Language :: Python :: 3.12
216
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
217
+ Classifier: Topic :: Software Development :: Libraries
218
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
219
+ Requires-Python: >=3.10
220
+ Description-Content-Type: text/markdown
221
+ License-File: LICENSE
222
+ Requires-Dist: pydantic>=2.9.2
223
+ Requires-Dist: numpy==1.26.4
224
+ Requires-Dist: pandas>=2.2.3
225
+ Requires-Dist: tqdm>=4.67.1
226
+ Requires-Dist: tiktoken>=0.9.0
227
+ Requires-Dist: openai>=1.90.0
228
+ Requires-Dist: rank_bm25>=0.2.2
229
+ Requires-Dist: pyyaml>=6.0.2
230
+ Requires-Dist: pyarrow>=20.0.0
231
+ Requires-Dist: fastparquet>=2024.11.0
232
+ Requires-Dist: sacrebleu>=2.5.1
233
+ Requires-Dist: evaluate>=0.4.4
234
+ Requires-Dist: rouge_score>=0.1.2
235
+ Requires-Dist: rich>=14.0.0
236
+ Requires-Dist: click>=8.2.1
237
+ Requires-Dist: cohere>=5.18.0
238
+ Requires-Dist: tokenlog>=0.0.3
239
+ Requires-Dist: aiohttp>=3.12.13
240
+ Requires-Dist: voyageai>=0.3.2
241
+ Requires-Dist: mixedbread-ai>=2.2.6
242
+ Requires-Dist: scikit-learn>=1.7.0
243
+ Requires-Dist: emoji>=2.14.1
244
+ Requires-Dist: fastapi>=0.115.13
245
+ Requires-Dist: banks>=2.1.2
246
+ Requires-Dist: grpcio<1.68.0,>=1.66.2
247
+ Requires-Dist: grpcio-health-checking<1.68.0,>=1.66.2
248
+ Requires-Dist: grpcio-status<1.68.0,>=1.66.2
249
+ Requires-Dist: grpcio-tools<1.68.0,>=1.66.2
250
+ Requires-Dist: datasets>=3.5.1
251
+ Requires-Dist: pyarrow>=20.0.0
252
+ Requires-Dist: pymilvus>=2.6.0b0
253
+ Requires-Dist: chromadb>=1.0.0
254
+ Requires-Dist: weaviate-client>=4.15.2
255
+ Requires-Dist: pinecone[grpc]
256
+ Requires-Dist: couchbase>=4.4.0
257
+ Requires-Dist: qdrant-client>=1.12.1
258
+ Requires-Dist: quart>=0.20.0
259
+ Requires-Dist: pyngrok>=7.2.11
260
+ Requires-Dist: llama-index>=0.12.42
261
+ Requires-Dist: llama-index-core>=0.12.42
262
+ Requires-Dist: llama-index-readers-file>=0.4.9
263
+ Requires-Dist: llama-index-embeddings-openai>=0.3.1
264
+ Requires-Dist: llama-index-embeddings-ollama>=0.6.0
265
+ Requires-Dist: llama-index-embeddings-openai-like>=0.1.1
266
+ Requires-Dist: llama-index-llms-openai>=0.4.7
267
+ Requires-Dist: llama-index-llms-openai-like>=0.4.0
268
+ Requires-Dist: llama-index-retrievers-bm25>=0.5.2
269
+ Requires-Dist: llama-index-llms-bedrock>=0.3.8
270
+ Requires-Dist: streamlit>=1.46.0
271
+ Requires-Dist: gradio>=5.34.2
272
+ Requires-Dist: langchain-core==0.2.43
273
+ Requires-Dist: langchain-unstructured==0.1.2
274
+ Requires-Dist: langchain-upstage==0.1.5
275
+ Requires-Dist: langchain-community==0.2.19
276
+ Requires-Dist: langsmith==0.1.147
277
+ Requires-Dist: panel>=1.7.1
278
+ Requires-Dist: seaborn>=0.13.2
279
+ Requires-Dist: ipykernel>=6.29.5
280
+ Requires-Dist: ipywidgets>=8.1.7
281
+ Requires-Dist: ipywidgets_bokeh>=1.6.0
282
+ Provides-Extra: ko
283
+ Requires-Dist: kiwipiepy>=0.18.0; extra == "ko"
284
+ Requires-Dist: konlpy>=0.6.0; extra == "ko"
285
+ Provides-Extra: parse
286
+ Requires-Dist: PyMuPDF>=1.26.1; extra == "parse"
287
+ Requires-Dist: pdfminer.six>=20250506; extra == "parse"
288
+ Requires-Dist: pdfplumber>=0.11.7; extra == "parse"
289
+ Requires-Dist: jq>=1.9.1; extra == "parse"
290
+ Requires-Dist: unstructured[pdf]>=0.17.2; extra == "parse"
291
+ Requires-Dist: PyPDF2==2.12.1; extra == "parse"
292
+ Requires-Dist: pdf2image>=1.17.0; extra == "parse"
293
+ Provides-Extra: ja
294
+ Requires-Dist: sudachipy>=0.6.8; extra == "ja"
295
+ Requires-Dist: sudachidict_core; extra == "ja"
296
+ Provides-Extra: gpu
297
+ Requires-Dist: torch>=2.7.1; extra == "gpu"
298
+ Requires-Dist: sentencepiece>=0.2.0; extra == "gpu"
299
+ Requires-Dist: bert_score>=0.3.13; extra == "gpu"
300
+ Requires-Dist: peft>=0.15.2; extra == "gpu"
301
+ Requires-Dist: llmlingua>=0.2.2; extra == "gpu"
302
+ Requires-Dist: FlagEmbedding>=1.2.11; extra == "gpu"
303
+ Requires-Dist: sentence-transformers>=4.1.0; extra == "gpu"
304
+ Requires-Dist: transformers>=4.51.3; extra == "gpu"
305
+ Requires-Dist: llama-index-llms-ollama>=0.6.0; extra == "gpu"
306
+ Requires-Dist: llama-index-embeddings-huggingface>=0.5.4; extra == "gpu"
307
+ Requires-Dist: llama-index-llms-huggingface>=0.5.0; extra == "gpu"
308
+ Requires-Dist: onnxruntime>=1.22.0; extra == "gpu"
309
+ Requires-Dist: vllm>=0.11.0; extra == "gpu"
310
+ Provides-Extra: all
311
+ Requires-Dist: AutoRAG[gpu]; extra == "all"
312
+ Requires-Dist: AutoRAG[ko]; extra == "all"
313
+ Requires-Dist: AutoRAG[parse]; extra == "all"
314
+ Requires-Dist: AutoRAG[ja]; extra == "all"
315
+ Dynamic: license-file
316
+
317
+ # AutoRAG
318
+
319
+ RAG AutoML tool for automatically finding an optimal RAG pipeline for your data.
320
+
321
+ ![Thumbnail](https://github.com/user-attachments/assets/6bab243d-a4b3-431a-8ac0-fe17336ab4de)
322
+
323
+ ![PyPI - Downloads](https://img.shields.io/pypi/dm/AutoRAG)
324
+ [![LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-blue?style=flat-square&logo=linkedin)](https://www.linkedin.com/company/104375108/admin/dashboard/)
325
+ ![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/AutoRAG_HQ)
326
+ [![Hugging Face](https://img.shields.io/badge/Hugging%20Face-Follow-orange?style=flat-square&logo=huggingface)](https://huggingface.co/AutoRAG)
327
+
328
+ <a href="https://trendshift.io/repositories/7832" target="_blank"><img src="https://trendshift.io/api/badge/repositories/7832" alt="Marker-Inc-Korea%2FAutoRAG | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
329
+
330
+ There are many RAG pipelines and modules out there,
331
+ but you don’t know what pipeline is great for “your own data” and "your own use-case."
332
+ Making and evaluating all RAG modules is very time-consuming and hard to do.
333
+ But without it, you will never know which RAG pipeline is the best for your own use-case.
334
+
335
+ AutoRAG is a tool for finding the optimal RAG pipeline for “your data.”
336
+ You can evaluate various RAG modules automatically with your own evaluation data
337
+ and find the best RAG pipeline for your own use-case.
338
+
339
+ AutoRAG supports a simple way to evaluate many RAG module combinations.
340
+ Try now and find the best RAG pipeline for your own use-case.
341
+
342
+ Explore our 📖 [Document](https://marker-inc-korea.github.io/AutoRAG/)!!
343
+
344
+ ---
345
+
346
+ ## YouTube Tutorial
347
+
348
+ https://github.com/Marker-Inc-Korea/AutoRAG/assets/96727832/c0d23896-40c0-479f-a17b-aa2ec3183a26
349
+
350
+ _Muted by default, enable sound for voice-over_
351
+
352
+ You can see on [YouTube](https://youtu.be/2ojK8xjyXAU?feature=shared)
353
+
354
+ ## Use AutoRAG in HuggingFace Space 🚀
355
+
356
+ - [💬 Naive RAG Chatbot](https://huggingface.co/spaces/AutoRAG/Naive-RAG-chatbot)
357
+ - [✏️ AutoRAG Data Creation](https://huggingface.co/spaces/AutoRAG/AutoRAG-data-creation)
358
+ - [🚀 AutoRAG RAG Pipeline Optimization](https://huggingface.co/spaces/AutoRAG/RAG-Pipeline-Optimization)
359
+
360
+ ## Colab Tutorial
361
+
362
+ - [Step 1: Basic of AutoRAG | Optimizing your RAG pipeline](https://colab.research.google.com/drive/19OEQXO_pHN6gnn2WdfPd4hjnS-4GurVd?usp=sharing)
363
+ - [Step 2: Data Creation | Create your own Data for RAG Optimization](https://colab.research.google.com/drive/1BOdzMndYgMY_iqhwKcCCS7ezHbZ4Oz5X?usp=sharing)
364
+ - [Step 3: Use Custom LLM & Embedding Model | Use Custom Model](https://colab.research.google.com/drive/12VpWcSTSOsLSyW0BKb-kPoEzK22ACxvS?usp=sharing)
365
+
366
+ # Index
367
+
368
+ - [Quick Install](#quick-install)
369
+ - [Data Creation](#data-creation)
370
+ - [Parsing](#1-parsing)
371
+ - [Chunking](#2-chunking)
372
+ - [QA Creation](#3-qa-creation)
373
+ - [RAG Optimization](#rag-optimization)
374
+ - [How AutoRAG optimizes RAG pipeline?](#how-autorag-optimizes-rag-pipeline)
375
+ - [Metrics](#metrics)
376
+ - [Quick Start](#quick-start-1)
377
+ - [Set YAML File](#1-set-yaml-file)
378
+ - [Run AutoRAG](#2-run-autorag)
379
+ - [Run Dashboard](#3-run-dashboard)
380
+ - [Deploy your optimal RAG pipeline](#4-deploy-your-optimal-rag-pipeline)
381
+ - [FaQ](#-faq)
382
+
383
+ # Quick Install
384
+
385
+ We recommend using Python version 3.10 or higher for AutoRAG.
386
+
387
+ ```bash
388
+ pip install AutoRAG
389
+ ```
390
+
391
+ If you want to use the local models, you need to install gpu version.
392
+
393
+ ```bash
394
+ pip install "AutoRAG[gpu]"
395
+ ```
396
+
397
+ Or for parsing, you can use the parsing version.
398
+
399
+ ```bash
400
+ pip install "AutoRAG[gpu,parse]"
401
+ ```
402
+
403
+ # Data Creation
404
+
405
+ <a href="https://huggingface.co/spaces/AutoRAG/AutoRAG-data-creation">
406
+ <img src="https://github.com/user-attachments/assets/8c6e4b02-3938-4560-b817-c95764965b50" alt="Hugging Face Sticker" style="width:200px;height:auto;">
407
+ </a>
408
+
409
+ ![Image](https://github.com/user-attachments/assets/146d005d-dcb9-4460-a8b3-25126e5e3dc2)
410
+
411
+ ![image](https://github.com/user-attachments/assets/6079f696-207c-4221-8d28-5561a203dfe2)
412
+
413
+ RAG Optimization requires two types of data: QA dataset and Corpus dataset.
414
+
415
+ 1. **QA** dataset file (qa.parquet)
416
+ 2. **Corpus** dataset file (corpus.parquet)
417
+
418
+ **QA** dataset is important for accurate and reliable evaluation and optimization.
419
+
420
+ **Corpus** dataset is critical to the performance of RAGs.
421
+ This is because RAG uses the corpus to retrieve documents and generate answers using it.
422
+
423
+ ### 📌 Supporting Data Creation Modules
424
+
425
+ ![Image](https://github.com/user-attachments/assets/c6f15fab-6c69-4627-9685-6c218b66f5d6)
426
+
427
+ - [Supporting Parsing Modules List](https://edai.notion.site/Supporting-Parsing-Modules-e0b7579c7c0e4fb2963e408eeccddd75?pvs=4)
428
+ - [Supporting Chunking Modules List](https://edai.notion.site/Supporting-Chunk-Modules-8db803dba2ec4cd0a8789659106e86a3?pvs=4)
429
+
430
+ ## Quick Start
431
+
432
+ ### 1. Parsing
433
+
434
+ #### Set YAML File
435
+
436
+ ```yaml
437
+ modules:
438
+ - module_type: langchain_parse
439
+ parse_method: pdfminer
440
+ ```
441
+
442
+ You can also use multiple Parse modules at once.
443
+ However, in this case, you'll need to return a new process for each parsed result.
444
+
445
+ #### Start Parsing
446
+
447
+ You can parse your raw documents with just a few lines of code.
448
+
449
+ ```python
450
+ from autorag.parser import Parser
451
+
452
+ parser = Parser(data_path_glob="your/data/path/*")
453
+ parser.start_parsing("your/path/to/parse_config.yaml")
454
+ ```
455
+
456
+ ### 2. Chunking
457
+
458
+ #### Set YAML File
459
+
460
+ ```yaml
461
+ modules:
462
+ - module_type: llama_index_chunk
463
+ chunk_method: Token
464
+ chunk_size: 1024
465
+ chunk_overlap: 24
466
+ add_file_name: en
467
+ ```
468
+
469
+ You can also use multiple Chunk modules at once.
470
+ In this case, you need to use one corpus to create QA and then map the rest of the corpus to QA Data.
471
+ If the chunk method is different, the retrieval_gt will be different, so we need to remap it to the QA dataset.
472
+
473
+ #### Start Chunking
474
+
475
+ You can chunk your parsed results with just a few lines of code.
476
+
477
+ ```python
478
+ from autorag.chunker import Chunker
479
+
480
+ chunker = Chunker.from_parquet(parsed_data_path="your/parsed/data/path")
481
+ chunker.start_chunking("your/path/to/chunk_config.yaml")
482
+ ```
483
+
484
+ ### 3. QA Creation
485
+
486
+ You can create QA dataset with just a few lines of code.
487
+
488
+ ```python
489
+ import pandas as pd
490
+ from llama_index.llms.openai import OpenAI
491
+
492
+ from autorag.data.qa.filter.dontknow import dontknow_filter_rule_based
493
+ from autorag.data.qa.generation_gt.llama_index_gen_gt import (
494
+ make_basic_gen_gt,
495
+ make_concise_gen_gt,
496
+ )
497
+ from autorag.data.qa.schema import Raw, Corpus
498
+ from autorag.data.qa.query.llama_gen_query import factoid_query_gen
499
+ from autorag.data.qa.sample import random_single_hop
500
+
501
+ llm = OpenAI()
502
+ raw_df = pd.read_parquet("your/path/to/parsed.parquet")
503
+ raw_instance = Raw(raw_df)
504
+
505
+ corpus_df = pd.read_parquet("your/path/to/corpus.parquet")
506
+ corpus_instance = Corpus(corpus_df, raw_instance)
507
+
508
+ initial_qa = (
509
+ corpus_instance.sample(random_single_hop, n=3)
510
+ .map(
511
+ lambda df: df.reset_index(drop=True),
512
+ )
513
+ .make_retrieval_gt_contents()
514
+ .batch_apply(
515
+ factoid_query_gen, # query generation
516
+ llm=llm,
517
+ )
518
+ .batch_apply(
519
+ make_basic_gen_gt, # answer generation (basic)
520
+ llm=llm,
521
+ )
522
+ .batch_apply(
523
+ make_concise_gen_gt, # answer generation (concise)
524
+ llm=llm,
525
+ )
526
+ .filter(
527
+ dontknow_filter_rule_based, # filter don't know
528
+ lang="en",
529
+ )
530
+ )
531
+
532
+ initial_qa.to_parquet('./qa.parquet', './corpus.parquet')
533
+ ```
534
+
535
+ # RAG Optimization
536
+
537
+ <a href="https://huggingface.co/spaces/AutoRAG/RAG-Pipeline-Optimization">
538
+ <img src="https://github.com/user-attachments/assets/8c6e4b02-3938-4560-b817-c95764965b50" alt="Hugging Face Sticker" style="width:200px;height:auto;">
539
+ </a>
540
+
541
+ ![Image](https://github.com/user-attachments/assets/b814928d-54a4-4b96-af34-adba0ac6803b)
542
+
543
+ ![rag](https://github.com/user-attachments/assets/214d842e-fc67-4113-9c24-c94158b00c23)
544
+
545
+ ## How AutoRAG optimizes RAG pipeline?
546
+
547
+ Here is the AutoRAG RAG Structure that only show Nodes.
548
+
549
+ ![Image](https://github.com/user-attachments/assets/cbc60938-e211-4fbf-be74-31bd9a997581)
550
+
551
+ Here is the image showing all the nodes and modules.
552
+
553
+ ![Image](https://github.com/user-attachments/assets/9489e803-f47a-49d4-97ec-0dd9b270394f)
554
+
555
+ ![rag_opt_gif](https://github.com/user-attachments/assets/55bd09cd-8420-4f6d-bc7d-0a66af288317)
556
+
557
+ ### 📌 Supporting RAG Optimization Nodes & modules
558
+
559
+ - [Supporting RAG Modules list](https://edai.notion.site/Supporting-Nodes-modules-0ebc7810649f4e41aead472a92976be4?pvs=4)
560
+
561
+ ## Metrics
562
+
563
+ The metrics used by each node in AutoRAG are shown below.
564
+
565
+ ![Image](https://github.com/user-attachments/assets/5b342f68-d25c-4cba-aa85-1e257801afea)
566
+
567
+ ![Image](https://github.com/user-attachments/assets/393d3ad6-1bde-4e75-b314-5c150eadaeee)
568
+
569
+ - [Supporting metrics list](https://edai.notion.site/Supporting-metrics-867d71caefd7401c9264dd91ba406043?pvs=4)
570
+
571
+ Here is the detailed information about the metrics that AutoRAG supports.
572
+
573
+ - [Retrieval Metrics](https://edai.notion.site/Retrieval-Metrics-dde3d9fa1d9547cdb8b31b94060d21e7?pvs=4)
574
+ - [Retrieval Token Metrics](https://edai.notion.site/Retrieval-Token-Metrics-c3e2d83358e04510a34b80429ebb543f?pvs=4)
575
+ - [Generation Metrics](https://github.com/user-attachments/assets/7d4a3069-9186-4854-885d-ca0f7bcc17e8)
576
+
577
+ ## Quick Start
578
+
579
+ ### 1. Set YAML File
580
+
581
+ First, you need to set the config YAML file for your RAG optimization.
582
+
583
+ We highly recommend using pre-made config YAML files for starter.
584
+
585
+ - [Get Sample YAML](sample_config/rag)
586
+ - [Sample YAML Guide](https://marker-inc-korea.github.io/AutoRAG/optimization/sample_config.html)
587
+ - [Make Custom YAML Guide](https://marker-inc-korea.github.io/AutoRAG/optimization/custom_config.html)
588
+
589
+ Here is an example of the config YAML file to use three retrieval nodes, `prompt_maker`, and `generator` nodes.
590
+
591
+ ```yaml
592
+ node_lines:
593
+ - node_line_name: retrieve_node_line
594
+ nodes:
595
+ - node_type: lexical_retrieval
596
+ strategy:
597
+ metrics: [ retrieval_f1, retrieval_recall, retrieval_ndcg, retrieval_mrr ]
598
+ top_k: 3
599
+ modules:
600
+ - module_type: bm25
601
+ - node_type: semantic_retrieval
602
+ strategy:
603
+ metrics: [ retrieval_f1, retrieval_recall, retrieval_ndcg, retrieval_mrr ]
604
+ top_k: 3
605
+ modules:
606
+ - module_type: vectordb
607
+ vectordb: default
608
+ - node_type: hybrid_retrieval
609
+ strategy:
610
+ metrics: [ retrieval_f1, retrieval_recall, retrieval_ndcg, retrieval_mrr ]
611
+ top_k: 3
612
+ modules:
613
+ - module_type: hybrid_rrf
614
+ weight_range: (4,80)
615
+ - node_line_name: post_retrieve_node_line
616
+ nodes:
617
+ - node_type: prompt_maker # Set Prompt Maker Node
618
+ strategy:
619
+ metrics: # Set Generation Metrics
620
+ - metric_name: meteor
621
+ - metric_name: rouge
622
+ - metric_name: sem_score
623
+ embedding_model: openai
624
+ modules:
625
+ - module_type: fstring
626
+ prompt: "Read the passages and answer the given question. \n Question: {query} \n Passage: {retrieved_contents} \n Answer : "
627
+ - node_type: generator # Set Generator Node
628
+ strategy:
629
+ metrics: # Set Generation Metrics
630
+ - metric_name: meteor
631
+ - metric_name: rouge
632
+ - metric_name: sem_score
633
+ embedding_model: openai
634
+ modules:
635
+ - module_type: openai_llm
636
+ llm: gpt-4o-mini
637
+ batch: 16
638
+ ```
639
+
640
+ ### 2. Run AutoRAG
641
+
642
+ You can evaluate your RAG pipeline with just a few lines of code.
643
+
644
+ ```python
645
+ from autorag.evaluator import Evaluator
646
+
647
+ evaluator = Evaluator(qa_data_path='your/path/to/qa.parquet', corpus_data_path='your/path/to/corpus.parquet')
648
+ evaluator.start_trial('your/path/to/config.yaml')
649
+ ```
650
+
651
+ or you can use the command line interface
652
+
653
+ ```bash
654
+ autorag evaluate --config your/path/to/default_config.yaml --qa_data_path your/path/to/qa.parquet --corpus_data_path your/path/to/corpus.parquet
655
+ ```
656
+
657
+ Once it is done, you can see several files and folders created in your current directory.
658
+ At the trial folder named to numbers (like 0),
659
+ you can check `summary.csv` file that summarizes the evaluation results and the best RAG pipeline for your data.
660
+
661
+ For more details, you can check out how the folder structure looks like
662
+ at [here](https://marker-inc-korea.github.io/AutoRAG/optimization/folder_structure.html).
663
+
664
+ ### 3. Run Dashboard
665
+
666
+ You can run a dashboard to easily see the result.
667
+
668
+ ```bash
669
+ autorag dashboard --trial_dir /your/path/to/trial_dir
670
+ ```
671
+
672
+ #### sample dashboard
673
+
674
+ ![dashboard](https://github.com/Marker-Inc-Korea/AutoRAG/assets/96727832/3798827d-31d7-4c4e-a9b1-54340b964e53)
675
+
676
+ ### 4. Deploy your optimal RAG pipeline
677
+
678
+ ### 4-1. Run as a Code
679
+
680
+ You can use an optimal RAG pipeline right away from the trial folder.
681
+ The trial folder is the directory used in the running dashboard. (like 0, 1, 2, ...)
682
+
683
+ ```python
684
+ from autorag.deploy import Runner
685
+
686
+ runner = Runner.from_trial_folder('/your/path/to/trial_dir')
687
+ runner.run('your question')
688
+ ```
689
+
690
+ ### 4-2. Run as an API server
691
+
692
+ You can run this pipeline as an API server.
693
+
694
+ Check out the API endpoint at [here](./docs/source/deploy/api_endpoint.md).
695
+
696
+ ```python
697
+ import nest_asyncio
698
+ from autorag.deploy import ApiRunner
699
+
700
+ nest_asyncio.apply()
701
+
702
+ runner = ApiRunner.from_trial_folder('/your/path/to/trial_dir')
703
+ runner.run_api_server()
704
+ ```
705
+
706
+ ```bash
707
+ autorag run_api --trial_dir your/path/to/trial_dir --host 0.0.0.0 --port 8000
708
+ ```
709
+
710
+ The cli command uses extracted config YAML file. If you want to know it more, check
711
+ out [here](https://marker-inc-korea.github.io/AutoRAG/tutorial.html#extract-pipeline-and-evaluate-test-dataset).
712
+
713
+ ### 4-3. Run as a Web Interface
714
+
715
+ you can run this pipeline as a web interface.
716
+
717
+ Check out the web interface at [here](deploy/web.md).
718
+
719
+ ```bash
720
+ autorag run_web --trial_path your/path/to/trial_path
721
+ ```
722
+
723
+ #### sample web interface
724
+
725
+ <img width="1491" alt="web_interface" src="https://github.com/Marker-Inc-Korea/AutoRAG/assets/96727832/f6b00353-f6bb-4d8f-8740-1c264c0acbb8">
726
+
727
+ ## ☎️ FaQ
728
+
729
+ 💻 [Hardware Specs](https://edai.notion.site/Hardware-specs-28cefcf2a26246ffadc91e2f3dc3d61c?pvs=4)
730
+
731
+ ⭐ [Running AutoRAG](https://edai.notion.site/About-running-AutoRAG-44a8058307af42068fc218a073ee480b?pvs=4)
732
+
733
+ 🍯 [Tips/Tricks](https://edai.notion.site/Tips-Tricks-10708a0e36ff461cb8a5d4fb3279ff15?pvs=4)
734
+
735
+ ☎️ [TroubleShooting](https://medium.com/@autorag/autorag-troubleshooting-5cf872b100e3)
736
+
737
+ ## Thanks for shoutout
738
+
739
+ ### Company
740
+
741
+ <a href="https://www.linkedin.com/posts/llamaindex_rag-pipelines-have-a-lot-of-hyperparameters-activity-7182053546593247232-HFMN/">
742
+ <img src="https://github.com/user-attachments/assets/b8fdaaf6-543a-4019-8dbe-44191a5269b9" alt="llama index" style="width:200px;height:auto;">
743
+ </a>
744
+
745
+ ### Individual
746
+
747
+ - [Shubham Saboo](https://www.linkedin.com/posts/shubhamsaboo_just-found-the-solution-to-the-biggest-rag-activity-7255404464054939648-ISQ8/)
748
+ - [Kalyan KS](https://www.linkedin.com/posts/kalyanksnlp_rag-autorag-llms-activity-7258677155574788097-NgS0/)
749
+
750
+ ---
751
+
752
+ # ✨ Contributors ✨
753
+
754
+ Thanks go to these wonderful people:
755
+
756
+ <a href="https://github.com/Marker-Inc-Korea/AutoRAG/graphs/contributors">
757
+ <img src="https://contrib.rocks/image?repo=Marker-Inc-Korea/AutoRAG" />
758
+ </a>
759
+
760
+ # Contribution
761
+
762
+ We are developing AutoRAG as open-source.
763
+
764
+ So this project welcomes contributions and suggestions. Feel free to contribute to this project.
765
+
766
+ Plus, check out our detailed documentation at [here](https://marker-inc-korea.github.io/AutoRAG/index.html).
767
+
768
+ ## Citation
769
+
770
+ ```bibtex
771
+ @misc{kim2024autoragautomatedframeworkoptimization,
772
+ title={AutoRAG: Automated Framework for optimization of Retrieval Augmented Generation Pipeline},
773
+ author={Dongkyu Kim and Byoungwook Kim and Donggeon Han and Matouš Eibich},
774
+ year={2024},
775
+ eprint={2410.20878},
776
+ archivePrefix={arXiv},
777
+ primaryClass={cs.CL},
778
+ url={https://arxiv.org/abs/2410.20878},
779
+ }
780
+ ```