من مدل جدید تعبیه شده qodo-embed-1🤯 را امتحان کردم

سلام devs👋
اخیراً ، من qodo را امتحان کردم dig-embed-1، یک مدل جدید تعبیه شده کد جدید که به طور خاص برای انجام کارهای بازیابی در توسعه نرم افزار ساخته شده است. من واقعاً تحت تأثیر عملکرد این کار ، حتی در کوچکتر قرار گرفتم 1.5b نوع 🤏
در این مقاله ، من این مباحث را با جزئیات پوشش می دهم:
- تعبیه کد چیست؟
- kodo-embed-1-1.5b چیست؟
- قابلیت های اصلی مدل ها
- دستگیری با qodo-embed-1-1.5b
بیایید شروع کنیم
اما صبر کنید ، قبل از شروع کار ، ابتدا درک کنیم:
تعبیه کد چیست؟
تعبیه کد ساختارهای کد پیچیده را به بردارهای عددی که ضبط می کند معنی وت عمل کد
به عبارت ساده ، به تعبیه کد مانند تبدیل کد خود به شماره های هوشمند که کد را به معنای آن می گیرند ، فکر کنید ، نه فقط به نظر می رسد.
این دقیقاً مانند چگونگی ارائه Google Maps مختصات GPS به مکان ها (latitude
با longitude
) ، تعبیه های کد یک بردار (لیستی از شماره ها) را به کد شما می دهد تا ماشین ها بتوانند آن را درک و مقایسه کنند.
به عنوان مثال ، این دو عملکرد پایتون را در نظر بگیرید:
def add_numbers(a, b):
return a + b
def sum_two_values(x, y):
result = x + y
return result
بنابراین ، اگر دو قطعه کد کارهای مشابهی انجام دهند ، تعبیه آنها در فضای شماره نزدیک به یکدیگر خواهد بود ، حتی اگر کد متفاوت به نظر برسد.
kodo-embed-1-1.5b چیست؟
qodo-embed-1-1.5b یک مدل تعبیه شده کد مدرن (پارامترهای 1.5b) است که برای کارهای بازیابی در حوزه توسعه نرم افزار طراحی شده است.
این مدل برای بهینه سازی شده است زبان طبیعی به کد وت کد به کد بازیابی
قابلیت های اصلی این مدل:
🔍 جستجوی کد: جستجوی کارآمد را در میان کد های بزرگ امکان پذیر می کند
🧠 نسل بازیابی-اوت (RAG): تولید کد را با درک متنی تقویت می کند
🤓 درک کد معنایی: روابط پیچیده بین قطعه کد را ضبط می کند
🌐 پشتیبانی چند زبانی: کد فرآیند از 9 زبان برنامه نویسی اصلی. ((Python ، C ++ ، C#، Go ، Java ، JavaScript ، PHP ، Ruby ، TypeScript)
📈 تعبیه های با ابعاد بالا: نمایش های غنی 1536 بعدی را تولید می کند
اگر علاقه مند به کسب اطلاعات بیشتر در این مورد هستید ، می توانید این وبلاگ را بررسی کنید
دستگیری با qodo-embed-1-1.5b
اکنون که می فهمیم تعبیه های کدی چیست و چه qodo-embed-1-1.5b به جدول می آورد ،
بیایید به این موضوع بپردازیم که چگونه می توانید استفاده از این مدل را با مواردی از مثال استفاده کنید.
Qodo-Embed-1 در دو اندازه موجود است:
- Lite (1.5b)-Dig-Embed-1-1.5b
- متوسط (7b)-Dig-Embed-1-7b
می توانید از طریق بغل کردن صورت از مدل استفاده کنید ترانسفورماتور یا فرستنده کننده کتابخانه ها
تنظیم سریع
# Install required libraries
pip install sentence-transformers
🔍 از مورد استفاده کنید: شباهت جمله
بیایید سعی کنیم با مقایسه با یکدیگر جمله مشابهی پیدا کنیم.
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
# Load the model
model = SentenceTransformer("Qodo/Qodo-Embed-1-1.5B", trust_remote_code=True)
# Source sentence and comparison list
source_sentence = "That is a very happy person"
sentences_to_compare = [
"That is a happy person",
"That is a happy dog",
"Today is a sunny day",
"The man is joyful and smiling"
]
# Encode source and comparison sentences
source_embedding = model.encode([source_sentence])
comparison_embeddings = model.encode(sentences_to_compare)
# Compute cosine similarity (returns a 2D array)
similarity_scores = cosine_similarity(source_embedding, comparison_embeddings)[0]
# Find most similar sentence
most_similar_idx = int(np.argmax(similarity_scores))
most_similar_sentence = sentences_to_compare[most_similar_idx]
similarity_score = similarity_scores[most_similar_idx]
# Print results
print(f"Source Sentence: \"{source_sentence}\"")
print(f"Most Similar Sentence: \"{most_similar_sentence}\"")
print(f"Similarity Score: {similarity_score:.4f}")
اینجا چه اتفاقی می افتد؟🤔:
- مدل هر جمله را به یک بردار اعداد تبدیل می کند.
- سپس ما استفاده می کنیم
cosine_similarity
برای مقایسه چقدر نزدیک آنها. - شما آن را خواهید دید “این یک فرد خوشحال است“بیشتر شبیه” استاین یک فرد بسیار خوشحال است“
✅ خروجی مورد انتظار: مدل مشابه جمله و نمره شباهت را برمی گرداند
توجه: نمره از 0 تا 1 و بالاتر به معنای مشابه تر است.
Source Sentence: "That is a very happy person"
Most Similar Sentence: "That is a happy person"
Similarity Score: 0.9795
🔍 از پرونده استفاده کنید: جستجوی کد
اکنون ، ما سعی خواهیم کرد یک قطعه کد خاص را از چندین قطعه کد از طریق پرس و جو در زبان طبیعی پیدا کنیم.
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
model = SentenceTransformer("Qodo/Qodo-Embed-1-1.5B", trust_remote_code=True)
snippets = [
"""def binary_search(arr, target):
low, high = 0, len(arr)-1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1""",
"""def bubble_sort(arr):
for i in range(len(arr)):
for j in range(0, len(arr)-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]""",
"""def reverse_linked_list(head):
prev = None
current = head
while current:
next_node = current.next
current.next = prev
prev = current
current = next_node
return prev"""
]
query = "How to reverse a linked list in Python"
query_embedding = model.encode(query)
snippets_embeddings = model.encode(snippets)
similarities = cosine_similarity([query_embedding], snippets_embeddings)
most_similar_idx = np.argmax(similarities)
print("Most relevant code snippet:")
print(snippets[most_similar_idx])
اینجا چه اتفاقی می افتد؟
- ما در حال رمزگذاری یک پرس و جو در زبان طبیعی و قطعه های چند کد هستیم.
- این مدل مشخص می کند که کدام قطعه با استفاده از شباهت Cosine بیشتر مربوط به پرس و جو است.
✅ خروجی مورد انتظار: مدل به درستی مشخص می کند reverse_linked_list
عملکرد به عنوان مناسب ترین مسابقه.
Most relevant code snippet:
def reverse_linked_list(head):
prev = None
current = head
while current:
next_node = current.next
current.next = prev
prev = current
current = next_node
return prev
🔍 مثال استفاده کنید: RAG با درک متنی
حال بیایید درک متنی مدل را آزمایش کنیم
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Qodo/Qodo-Embed-1-1.5B", trust_remote_code=True)
user_prompt = "Create a Flask route that accepts POST requests and returns JSON"
context_snippets = [
"""from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/submit', methods=['POST'])
def submit():
data = request.get_json()
return jsonify(data)
""",
"""from fastapi import FastAPI, Request
app = FastAPI()
@app.post("/items")
def create_item(request: Request):
return {"message": "Item received"}"""
]
prompt_embedding = model.encode(user_prompt)
context_embeddings = model.encode(context_snippets)
scores = cosine_similarity([prompt_embedding], context_embeddings)
best_match = context_snippets[np.argmax(scores)]
print("Context snippet to augment generation:")
print(best_match)
اینجا چه اتفاقی می افتد؟
- ما در حال تلاش برای بازیابی مناسب ترین قطعه متن بر اساس سریع ارائه شده هستیم.
✅ خروجی مورد انتظار: مدل قطعه صحیح مبتنی بر فلاسک را برای تقویت کد در یک خط لوله RAG انتخاب می کند.
Context snippet to augment generation:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/submit', methods=['POST'])
def submit():
data = request.get_json()
return jsonify(data)
🔍 مثال استفاده از مورد: پشتیبانی چند زبانی
حال ، بیایید آزمایش کنیم که مدل قادر به شناسایی زبانهای مختلف برنامه نویسی باشد.
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Qodo/Qodo-Embed-1-1.5B", trust_remote_code=True)
queries = [
"How to define a function in Java",
"How to create a list in Ruby"
]
snippets = [
"""public void greet() {
System.out.println("Hello World");
}""",
"""my_list = ["apple", "banana", "cherry"]"""
]
query_embeddings = model.encode(queries)
snippet_embeddings = model.encode(snippets)
scores = cosine_similarity(query_embeddings, snippet_embeddings)
for i, query in enumerate(queries):
best_match = snippets[np.argmax(scores[i])]
print(f"Best match for '{query}':\n{best_match}\n")
✅ خروجی مورد انتظار: هر پرس و جو با قطعه کد صحیح زبان مطابقت دارد و قابلیت چند زبانه مدل را تأیید می کند.
Best match for 'How to define a function in Java':
public void greet() {
System.out.println("Hello World");
}
Best match for 'How to create a list in Ruby':
my_list = ["apple", "banana", "cherry"]
مثالهایی که من استفاده کردم برای نشان دادن قابلیت های اصلی است ، می توانید آنها را برای گردش کار بازیابی پیچیده تر گسترش داده و با ایده های خود نیز آزمایش کنید!
👉 می توانید تمام این قطعه های کد را در مخزن GitHub من پیدا کنید و خودتان آنها را امتحان کنید.
thoughts افکار نهایی
بنابراین ، در هر مثال مدل نتایج صحیح و دقیقی را ارائه می دهد.
حتی پارامترهای 1.5B است ، عملکرد قابل مقایسه با مدل ها را ارائه می دهد 3-4 اندازه آن
اگر در حال ساختن خط لوله RAG ، یک ابزار جستجوی کد داخلی هستید یا فقط می خواهید محیط DEV خود را با بازیابی هوشمند غنی کنید ، این یک مدل است که ارزش امتحان کردن را دارد.
با تشکر از شما برای خواندن این تا کنون اگر این مقاله را مفید می دانید ، لطفاً این مقاله را دوست داشته و به اشتراک بگذارید. کسی می تواند آن را نیز مفید پیدا کند.
با من ارتباط برقرار کنید لوب وت وابسته به لینکدین
