המלצה | חיפוש הלכתי חכם (AI)
-
@sivan22 כתב בהמלצה | חיפוש הלכתי חכם (AI):
שימו לב שכדי להשתמש במודל שפה (שלב ב) צריך לספק לו מפתח API של openAI, ניתן להשיג אותו (בתשלום) באתר של openAI. אבל החיפוש הרגיל עובד לכולם.
יש להבנתי מודלים שנותנים API חינם, זה אפשרי להשתמש איתם או שזה מיועד רק עבור GPT?
-
@aiib כתב בהמלצה | חיפוש הלכתי חכם (AI):
@sivan22 זה דבר שכל אחד יכול לעשות? [מבחינת ידע ואמצעים?] א"כ יש אפשרות שתתן הדרכה איך אני יכול לעשות כזה דבר על ספר משלי?
אשמח!
תודה רבהיחסית זה פשוט, והרבה יותר קל מלאמן מודל.
צריך קצת ידע בפייתון, ובפרט בספריית pandas כדי להפוך את הספר לטבלה שכל רשומה היא שורה (או קטע) בספר. אלא אם כן אתה רוצה לעשות את זה ידנית....
ואז הקוד הוא די פשוט, שוב פייתון, משהו כזה (בהנחה שיש לך קובץ אקסל שכל שורה היא קטע מהספר):
import pandas ad pd df = pd.read_excel('הקובץ שלך'.xlsx) from langchain_huggingface.embeddings import HuggingFaceEmbeddings model_name = "intfloat/multilingual-e5-large" model_kwargs = {'device': 'cpu'} # or 'cuda' encode_kwargs = {'normalize_embeddings': False} embeddings_model = HuggingFaceEmbeddings( model_name=model_name, model_kwargs=model_kwargs, encode_kwargs=encode_kwargs ) df['embeddings'] =embeddings_model.embed_documents(df['text'].apply (lambda x: 'passage: ' + x ).to_list()) query = "בשבת ערב ראש חודש האם אומרים רצה או יעלה ויבוא" queryEmbedd = embeddings_model.embed_query('query: '+query) from sentence_transformers import util df['similarity'] = df['embeddings'].apply(lambda x: util.cos_sim(x, queryEmbedd)) results = df.sort_values(by='similarity', ascending=False) results
זהו. ב21 שורות סיימנו (כולל שורות ריקות).
קצת הסברים:
שורה 2 אנו לוקחים את הנתונים מהקובץ.
שורות 4-10 אנו מורידים מודל.
שורה 13 יוצרים את הייצוג המספרי עבור הנתונים.
שורות 15-16 יוצרים את הייצוג המספרי עבור השאילתה.
שורות 19-20 ממייינים את הנתונים לפי רמת הדימיון לשאילתה.
זהו. מציגים את התוצאה בשורה האחרונה. -
@sivan22 כתב בהמלצה | חיפוש הלכתי חכם (AI):
צריך קצת ידע בפייתון, ובפרט בספריית pandas כדי להפוך את הספר לטבלה שכל רשומה היא שורה (או קטע) בספר. אלא אם כן אתה רוצה לעשות את זה ידנית....
מה הכוונה שורה? שורה ממש? שורה שהיא חלק ממשפט אחד? כמות מילים?
זהו. מציגים את התוצאה בשורה האחרונה.
ואיך עושים שזה יהיה יפה כמו אצלך באתר מסודר ומעוצב?
-
@aiib אתה יכול להחליט לבד מה נקרא שורה, בספר עם סעיפים מתבקש שזה סעיף, אם זה ספר עם קטעים ארוכים אתה יכול להחליט שכל 20 מילים לדוגמה הם שורה.
בשביל שזה ייראה יפה צריך עוד קצת קוד פייתון, תוכל לראות את הקוד כאן: https://huggingface.co/spaces/sivan22/Halacha-semantic-search/blob/main/app.py
-
@אהרן כתב בהמלצה | חיפוש הלכתי חכם (AI):
יש אפשרות להוריד את זה למחשב?
עיין כאן https://mitmachim.top/post/771276
-
@aiib כתב בהמלצה | חיפוש הלכתי חכם (AI):
@sivan22 כתב בהמלצה | חיפוש הלכתי חכם (AI):
אני אולי אעשה space שאפשר להעלות אליו קובץ, ליצור לו ייצוגים מספריים ולחפש בהם.
הכי טוב!! אם זה בקלות אדרבה ואדרבה, מאמין שזה יעזור לי ולרבים!
תעדכן אם זה בתוכנית בזמן הקרוב...זה מוכן: https://huggingface.co/spaces/sivan22/Semantic-Search-upload-your-file
תתאזר בסבלנות ליצירת הייצוג המספרי, זה יכול לקחת הרבה זמן (זה רץ בענן חינמי בלי GPU)
-
@aiib כתב בהמלצה | חיפוש הלכתי חכם (AI):
@sivan22 יש מצב ליצור כזה פרטי שלא כל אחד יוכל לגשת?
אפשר באותו אתר, אבל בתשלום (חינם זה רק ציבורי).
עריכה: הכי טוב שיהיה אפשרות למשהו קבוע כמו שאתה עשית לילקוט יוסף.
וכמובן שאתה יכול ליצור פעם אחת את הייצוגים ולשמור אותם בענן, וכל פעם להוריד אותם מוכנים.
היום זה ממש שווה ללמוד פייתון, ובפרט את הספריות: pandas, transformers, וdatasets.
-
@sivan22 כתב בהמלצה | חיפוש הלכתי חכם (AI):
@aiib כתב בהמלצה | חיפוש הלכתי חכם (AI):
@sivan22 יש מצב ליצור כזה פרטי שלא כל אחד יוכל לגשת?
אפשר באותו אתר, אבל בתשלום (חינם זה רק ציבורי).
אתה בטוח? כי גם כשבחרתי מצב חינם הוא נתן לי אופציה של פרטי. ככה נראה לי...
עריכה: הכי טוב שיהיה אפשרות למשהו קבוע כמו שאתה עשית לילקוט יוסף.
וכמובן שאתה יכול ליצור פעם אחת את הייצוגים ולשמור אותם בענן, וכל פעם להוריד אותם מוכנים.
אני מתכוון ליצור ספייס שמיועד לחיפוש בספר פלוני [כמו שאתה עשית עם הילקוט יוסף] ספציפי.
-
@sivan22 כתב בהמלצה | חיפוש הלכתי חכם (AI):
אם כבר אתה מנסה ליצור ספייס, פשוט תשכפל את שלי:
אני מעלה קובץ טקסט [וורד הוא מסרב לקבל, אז המרתי לקובץ טקסט] ואני מקבל את השגיאה הבאה:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe0 in position 0: invalid continuation byte Traceback: File "/usr/local/lib/python3.10/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 575, in _run_script self._session_state.on_script_will_rerun( File "/usr/local/lib/python3.10/site-packages/streamlit/runtime/state/safe_session_state.py", line 65, in on_script_will_rerun self._state.on_script_will_rerun(latest_widget_states) File "/usr/local/lib/python3.10/site-packages/streamlit/runtime/state/session_state.py", line 517, in on_script_will_rerun self._call_callbacks() File "/usr/local/lib/python3.10/site-packages/streamlit/runtime/state/session_state.py", line 530, in _call_callbacks self._new_widget_state.call_callback(wid) File "/usr/local/lib/python3.10/site-packages/streamlit/runtime/state/session_state.py", line 274, in call_callback callback(*args, **kwargs) File "/home/user/app/app.py", line 105, in run df = get_df(uploaded_file) File "/usr/local/lib/python3.10/site-packages/streamlit/runtime/caching/cache_utils.py", line 165, in wrapper return cached_func(*args, **kwargs) File "/usr/local/lib/python3.10/site-packages/streamlit/runtime/caching/cache_utils.py", line 194, in __call__ return self._get_or_create_cached_value(args, kwargs) File "/usr/local/lib/python3.10/site-packages/streamlit/runtime/caching/cache_utils.py", line 221, in _get_or_create_cached_value return self._handle_cache_miss(cache, value_key, func_args, func_kwargs) File "/usr/local/lib/python3.10/site-packages/streamlit/runtime/caching/cache_utils.py", line 277, in _handle_cache_miss computed_value = self._info.func(*func_args, **func_kwargs) File "/home/user/app/app.py", line 21, in get_df stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))