ถามคำถามเกี่ยวกับที่เก็บ GitHub ของคุณได้อย่างง่ายดายโดยใช้ RAG
โครงการนี้ช่วยให้คุณสามารถโต้ตอบโดยตรงกับที่เก็บ GitHub และใช้ประโยชน์จากการค้นหาความหมายเพื่อทำความเข้าใจ Codebase ถามคำถามเฉพาะเกี่ยวกับรหัสที่เก็บและรับคำตอบที่มีความหมายและรับรู้บริบท

กระบวนการเริ่มต้นด้วยการโคลนที่เก็บ GitHub ในท้องถิ่นไปยังไดเรกทอรี /tmp จากนั้นใช้ SimpleDirectoryReader เพื่อโหลดที่เก็บโคลนสำหรับการจัดทำดัชนี เอกสารจะถูกแบ่งออกเป็นชิ้นตามประเภทไฟล์การใช้ CodeSplitter สำหรับไฟล์รหัสพร้อมกับ JSON , Markdown และ SentenceSplitters สำหรับรูปแบบอื่น ๆ หลังจากแยกวิเคราะห์โหนดแล้วการฝังจะถูกสร้างขึ้นโดยใช้โมเดล text-embedding-3-large และเก็บไว้ใน Elasticsearch การตั้งค่านี้ช่วยให้การค้นหาความหมายทำให้เราสามารถถามคำถามที่มีความหมายเกี่ยวกับรหัส
โคลนที่เก็บ :
git clone https://github.com/framsouza/github-assistant.git
cd github-assistantติดตั้งไลบรารีที่ต้องการ :
pip install -r requirements.txt ตั้งค่าตัวแปรสภาพแวดล้อม : อัปเดตไฟล์ .env ด้วยข้อมูลประจำตัว ElasticSearch ของคุณและ ELASTIC_INDEX ละเอียด ELASTIC_USER เก็บ GitHub เป้าหมาย (เช่น GITHUB_TOKEN , GITHUB_OWNER , GITHUB_REPO , GITHUB_BRANCH , ELASTIC_CLOUD_ID , ELASTIC_PASSWORD
python index.py ดัชนี Elasticsearch จะถูกสร้างขึ้นซึ่งเป็นที่อยู่อาศัยของฝัง จากนั้นคุณสามารถเชื่อมต่อกับการปรับใช้ ESS ของคุณและเรียกใช้การค้นหากับดัชนีคุณจะเห็นฟิลด์ใหม่ชื่อ embeddings
python query.pyตัวอย่าง:
python query.py
Please enter your query: Give me a detailed list of the external dependencies being used in this repository
Based on the provided context, the following is a list of third-party dependencies used in the given Elastic Cloud on K8s project:
1. dario.cat/mergo (BSD-3-Clause, v1.0.0)
2. Masterminds/sprig (MIT, v3.2.3)
3. Masterminds/semver (MIT, v4.0.0)
4. go-spew (ISC, v1.1.2-0.20180830191138-d8f796af33cc)
5. elastic/go-ucfg (Apache-2.0, v0.8.8)
6. ghodss/yaml (MIT, v1.0.0)
7. go-logr/logr (Apache-2.0, v1.4.1)
8. go-test/deep (MIT, v1.1.0)
9. gobuffalo/flect (MIT, v1.0.2)
10. google/go-cmp (BSD-3-Clause, v0.6.0)
...
This list includes both direct and indirect dependencies as identified in the context.None
คำถามที่คุณอาจต้องการถาม:
evaluation.py รหัสประมวลผลเอกสารเอกสารสร้างคำถามการประเมินตามเนื้อหาจากนั้นประเมินการตอบสนองต่อความเกี่ยวข้อง ( ไม่ว่าการตอบสนองจะเกี่ยวข้องกับคำถาม ) และความซื่อสัตย์ ( ไม่ว่าการตอบสนองจะซื่อสัตย์ต่อเนื้อหาแหล่งข้อมูล ) โดยใช้ LLM หรือไม่ นี่คือคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีการใช้รหัส:
python evaluation.py --num_documents 5 --skip_documents 2 --num_questions 3 --skip_questions 1 --process_last_questions
คุณสามารถเรียกใช้รหัสโดยไม่มีพารามิเตอร์ใด ๆ แต่ตัวอย่างข้างต้นแสดงให้เห็นถึงวิธีการใช้พารามิเตอร์ นี่คือรายละเอียดของสิ่งที่แต่ละพารามิเตอร์ทำ:
หลังจากโหลดเอกสารสคริปต์จะสร้างรายการคำถามตามเนื้อหาของเอกสารเหล่านี้
Number of documents loaded: 5
All available questions generated:
0. What is the purpose of chunking monitors in the updated push command as mentioned in the changelog?
1. How does the changelog describe the improvement made to the performance of the push command?
2. What new feature is added to the synthetics project when it is created via the `init` command?
3. According to the changelog, what is the file size of the CHANGELOG.md document?
4. On what date was the CHANGELOG.md file last modified?
5. What is the significance of the example lightweight monitor yaml file mentioned in the changelog?
6. How might the changes described in the changelog impact the workflow of users creating or updating monitors?
7. What is the file path where the CHANGELOG.md document is located?
8. Can you identify the issue numbers associated with the changes mentioned in the changelog?
9. What is the creation date of the CHANGELOG.md file as per the context information?
10. What type of file is the document described in the context information?
11. On what date was the CHANGELOG.md file last modified?
12. What is the file size of the CHANGELOG.md document?
13. Identify one of the bug fixes mentioned in the CHANGELOG.md file.
14. What command is referenced in the context of creating new synthetics projects?
15. How does the CHANGELOG.md file address the issue of varying NDJSON chunked response sizes?
16. What is the significance of the number #680 in the context of the document?
17. What problem is addressed by skipping the addition of empty values for locations?
18. How many bug fixes are explicitly mentioned in the provided context?
19. What is the file path of the CHANGELOG.md document?
20. What is the file path of the document being referenced in the context information?
...
Generated questions:
1. What command is referenced in relation to the bug fix in the CHANGELOG.md?
2. On what date was the CHANGELOG.md file created?
3. What is the primary purpose of the document based on the context provided?
Total number of questions generated: 3
Processing Question 1 of 3:
Evaluation Result:
+---------------------------------------------------+-------------------------------------------------+----------------------------------------------------+----------------------+----------------------+-------------------+------------------+------------------+
| Query | Response | Source | Relevancy Response | Relevancy Feedback | Relevancy Score | Faith Response | Faith Feedback |
+===================================================+=================================================+====================================================+======================+======================+===================+==================+==================+
| What command is referenced in relation to the bug | The `init` command is referenced in relation to | Bug Fixes | Pass | YES | 1 | Pass | YES |
| fix in the CHANGELOG.md? | the bug fix in the CHANGELOG.md. | | | | | | |
| | | | | | | | |
| | | - Pick the correct loader when bundling TypeScript | | | | | |
| | | or JavaScript journey files | | | | | |
| | | | | | | | |
| | | during push command #626 | | | | | |
+---------------------------------------------------+-------------------------------------------------+----------------------------------------------------+----------------------+----------------------+-------------------+------------------+------------------+
Processing Question 2 of 3:
Evaluation Result:
+-------------------------------------------------+------------------------------------------------+------------------------------+----------------------+----------------------+-------------------+------------------+------------------+
| Query | Response | Source | Relevancy Response | Relevancy Feedback | Relevancy Score | Faith Response | Faith Feedback |
+=================================================+================================================+==============================+======================+======================+===================+==================+==================+
| On what date was the CHANGELOG.md file created? | The date mentioned in the CHANGELOG.md file is | v1.0.0-beta-38 (20222-11-02) | Pass | YES | 1 | Pass | YES |
| | November 2, 2022. | | | | | | |
+-------------------------------------------------+------------------------------------------------+------------------------------+----------------------+----------------------+-------------------+------------------+------------------+
Processing Question 3 of 3:
Evaluation Result:
+---------------------------------------------------+---------------------------------------------------+------------------------------+----------------------+----------------------+-------------------+------------------+------------------+
| Query | Response | Source | Relevancy Response | Relevancy Feedback | Relevancy Score | Faith Response | Faith Feedback |
+===================================================+===================================================+==============================+======================+======================+===================+==================+==================+
| What is the primary purpose of the document based | The primary purpose of the document is to provide | v1.0.0-beta-38 (20222-11-02) | Pass | YES | 1 | Pass | YES |
| on the context provided? | a changelog detailing the features and | | | | | | |
| | improvements made in version 1.0.0-beta-38 of a | | | | | | |
| | software project. It highlights specific | | | | | | |
| | enhancements such as improved validation for | | | | | | |
| | monitor schedules and an enhanced push command | | | | | | |
| | experience. | | | | | | |
+---------------------------------------------------+---------------------------------------------------+------------------------------+----------------------+----------------------+-------------------+------------------+------------------+
(clean_env) (base) framsouza@Frams-MacBook-Pro-2 git-assistant %
+-------------------------------------------------+------------------------------------------------+------------------------------+----------------------+----------------------+-------------------+------------------+------------------+------+------------------+
Processing Question 3 of 3:
Evaluation Result:
+---------------------------------------------------+---------------------------------------------------+------------------------------+----------------------+----------------------+-------------------+------------------+------------------+-----------+------------------+
| Query | Response | Source | Relevancy Response | Relevancy Feedback | Relevancy Score | Faith Response | Faith Feedback |Response | Faith Feedback |
+===================================================+===================================================+==============================+======================+======================+===================+==================+==================+===========+==================+
| What is the primary purpose of the document based | The primary purpose of the document is to provide | v1.0.0-beta-38 (20222-11-02) | Pass | YES | 1 | Pass | YES | | YES |
| on the context provided? | a changelog detailing the features and | | | | | | | | |
| | improvements made in version 1.0.0-beta-38 of a | | | | | | | | |
| | software project. It highlights specific | | | | | | | | |
| | enhancements such as improved validation for | | | | | | | | |
| | monitor schedules and an enhanced push command | | | | | | | | |
| | experience. | | | | | | | | |
+---------------------------------------------------+---------------------------------------------------+------------------------------+----------------------+----------------------+-------------------+------------------+------------------+-----------+------------------+
นี่คือสองสามวิธีที่คุณสามารถใช้รหัสนี้:
ผ้าขี้ริ้วมีความสุข!